将配置变量存储在站点根目录下的PHP站点上的XML文件中是否存在风险太大?

时间:2009-03-03 06:15:17

标签: php xml apache .htaccess

我注意到Magento将MySQL连接详细信息存储在一个XML文件中,该文件在docroot上面没有安全保护。这似乎......非常危险。

XML似乎是一种存储配置数据的便捷方式,除了一件事,输入http://www.domain.com.au/library/config.xml将向全世界显示您的私人详细信息!

我继续使用XMl文件并将其添加到我的.htaccess文件中。

<Files ~ "\.xml$"> // regex files that end with xml extension
Order allow,deny 
Deny from all // don't show them
</Files>

现在我对此很满意,现在我不太确定。如果.htaccess文件被意外删除/损坏(除了人为错误之外会发生这种情况)怎么办?如果有一天我想将应用程序放在非Apache服务器上怎么办...每个服务器都有相应的阻止XML文件,以及如果他们这样做,他们可以在文件夹级别更改,如.htaccess可以(而不仅仅是httpd.conf文件)。

我的问题是...... XML的便利性(易于更新,需要修补的设计师不会感到如此恐吓)是否超过了潜在的问题(暴露私人数据)?

3 个答案:

答案 0 :(得分:1)

我个人只会以不能直接访问的格式或位置的格式存储配置文件信息。所以我要么使用docroot上面的XML格式,要么使用PHP $ config ['varname'] ='value'格式。如果直接调用,后面的方法只会渲染一个空白的白页(只要它是所有PHP并且不包含HTML并且不会回显)。

Gallery,vBulletin和Joomla都使用我提到的第二种方法。我知道我之前已经在其他PHP相关问题中提到过这些项目,但它似乎是一种在项目之间被广泛使用和接受的方法。

答案 1 :(得分:0)

简短回答,不,不是。但更好的问题是。如果它没有存储在配置文件中,你会保留它吗?

答案 2 :(得分:0)

我完全赞同此发明,但也提供第三种选择,应与

结合使用

命名存储配置信息的文件

.htanything.whatever

作为服务器范围,所有以.ht开头的文件都是外部用户无法读取的 {这就是为什么htaccess总是.htaccess}

personaly我只存储文件根目录之外的配置文件包含和函数库,但是要明白一些内容因此总是在它们上使用.htnaming约定,因为必须使用某人使用$ includesfolder在文档树中移动这种服务器上的软件