这样做是不是不会引起PHP全局变量未初始化漏洞
业余自学的PHP,想给自己写一个博客。
目前的思路是为每个可在前台显示的文件都要包含global.php文件
global.php文件define(GLOBAL_PHP,true)
每个不能显示的文件(例如include目录下或者func.php或者其他inc之类的文件)
就不会有GLOBAL_PHP的定义。
没有定义这个的,直接就显示forbidden.php页面了。
是否如图所示,不使用 _GET 就不会引起变量初始化漏洞 还是什么其他的原因?
根据图中推测。应该是不使用就不会引起。不过不太确定,故而来寻求指点
楼下两位。。
一个只说版本,能不能说得具体一点。。
另一位。。我问的是能不能引起漏洞,不是防止被访问。。毕竟也有别的例如admin.php之类的放在根目录下,不应该放在根目录下的我不会放的。。
回复内容:
业余自学的PHP,想给自己写一个博客。
目前的思路是为每个可在前台显示的文件都要包含global.php文件
global.php文件define(GLOBAL_PHP,true)
每个不能显示的文件(例如include目录下或者func.php或者其他inc之类的文件)
就不会有GLOBAL_PHP的定义。
没有定义这个的,直接就显示forbidden.php页面了。
是否如图所示,不使用 _GET 就不会引起变量初始化漏洞 还是什么其他的原因?
根据图中推测。应该是不使用就不会引起。不过不太确定,故而来寻求指点
楼下两位。。
一个只说版本,能不能说得具体一点。。
另一位。。我问的是能不能引起漏洞,不是防止被访问。。毕竟也有别的例如admin.php之类的放在根目录下,不应该放在根目录下的我不会放的。。
这个问题我自己回答吧。
参考资料1:
PHP Security Guide 的地址:
http://phpsec.org/projects/guide/1.html
一本有关PHP安全的书。
参考资料2:
http://php.net/manual/en/security.globals.php
PHP4.2发行公告
这种说法:
Perhaps the most controversial change in PHP is when the default value for the PHP directive register_globals went from ON to OFF in PHP » 4.2.0. Reliance on this directive was quite common and many people didn't even know it existed and assumed it's just how PHP works. This page will explain how one can write insecure code with this directive but keep in mind that the directive itself isn't insecure but rather it's the misuse of it.
也就是说,PHP4.1及之前的版本默认安装的PHP,
如果没定义变量的话,他就会给你相当于使用 _GET[“variable”] 这个方式来获取变量的值。
一个例子说明:
《?php
global $user ;
if $user == "admin"{
admin();
}
else{
user();
}
?》
也就是说你访问这个页面只要 test.php&user=admin 就会直接有管理的权限。
要是避免这个漏洞的话的话需要修改php的配置文件register_globals改为OFF。
PHP4.2及以后的版本就不会。
可以grep -r register_globals /etc/php*
看版本。5.5的路过……
防止php文件被访问的方法应该是document root下只放index.php作为单入口,其他php文件不要放在document root下
上一篇: php 正则形式修正符
下一篇: PHP如何调试?