php inc文件使用的风险和注意事项
前端之家收集整理的这篇文章主要介绍了
php inc文件使用的风险和注意事项,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
数据库使用中需要关注的主要问题之一是访问权限即用户名及密码的暴露。在编程中为了方便,一般都会用一个db.inc文件保存,如:
<div class="codetitle"><a style="CURSOR: pointer" data="10654" class="copybut" id="copybut10654" onclick="doCopy('code10654')"> 代码如下:
<div class="codebody" id="code10654">
<?
PHP$db_user = 'myuser';
$db_pass = 'mypass';
$db_host = '127.0.0.1';
$db =
MysqL_connect($db_host,$db_user,$db_pass);
?>
用户名及密码都是敏感数据,是需要特别注意的。他们被写在源码中造成了风险,但这是一个无法避免的问题。如果不这么做,你的
数据库就无法设置
用户名和密码进行保护了。
如果你读过http.conf(Apache的
配置文件)的默认版本的话,你会发现默认的
文件类型是text/plain(普通文本)。这样,如果db.inc这样的
文件被保存在网站根目录下时,就引发了风险。所有位于网站根目录下的资源都有相应的URL,由于Apache没有定义对.inc后缀的
文件的处理方式类型,在对这一类
文件进行访问时,会以普通文本的类型进行返回(默认类型),这样访问权限就被暴露在客户的浏览器上了。
为了进一步说明这个风险,考虑一下一个以/www为网站根目录的服务器,如果db.inc被保存在/www/inc,它有了一个自已的URLhttp://example.org/inc/db.inc(假设example.org是主机域名)。通过访问该URL就可以看到db.inc以文本方式
显示的源
文件。无论你把该
文件保存在/www哪个子目录下,都无法避免访问权限暴露的风险。
对这个问题最好的
解决方案是把它保存在网站根目录以外的包含目录中。你无需为了达到包含它们的目的而把它们放至在
文件系统中的特定位置,所有只要做的只是保证Web服务器对其有读取权限。因此,把它们放在网站根目录下是没有必要的风险,只要包含
文件还位于网站根目录下,任何减少风险的努力都是徒劳的。事实上,你只要把必须要通过URL访问的资源放置在网站根目录下即可。毕竟这是一个公共的目录。
前面的话题对于
sqlite
数据库也有用。把
数据库保存在当前目录下是非常方便的,因为你只要
调用文件名而无需指定路径。但是,把
数据库保存在网站根目录下就代表着不必要的风险。如果你没有采用安全措施防止直接访问的话,你的
数据库就危险了。
如果由于外部因素导致无法做到把所有包含
文件放在网站根目录之外,你可以在Apache配置成拒绝对.inc资源的请求。
<div class="codetitle">
<a style="CURSOR: pointer" data="2368" class="copybut" id="copybut2368" onclick="doCopy('code2368')"> 代码如下: