前几天配置PHP5.4的时候发现PHP新版已经在一些安全函数方面进行了增改,从PHP自身防止一些不必要的漏洞,因此开发人员在写代码时也需要注意版本的兼容。下面讲几个涉及安全方面的函数进行说明。
1、safe_mode
状态:已删除
描述:此函数主要限制系统相关的文件打开、命令执行等函数(具体影响函数见参考1)。当然现在也有bypasss safe_mode的方法(见参考2),通过com接口来绕过。
解决办法:可以通过配置PHP.ini中的disable_functions函数列表进行限制指定函数。
2、magic_quotes_gpc
状态:已删除 (magic_quotes_runtime、magic_quotes_sybase 删除)
描述:此函数在PHP <= 4.2.3默认开,会自动对GPC (Get/Post/Cookie)提交的值中的’,“,和空格进行转义,PHP5.4中get_magic_quotes_gpc()默认返回false。
解决办法:基本上还是不受影响,先检测状态,然后采用MysqL_real_escape_string进行转义处理。
3、register_globals
状态:已删除
描述:此函数虽然从PHP>>4.2开始默认由on改为off,但是如果程序员开启的话会导致变量覆盖等安全问题,特别是结合文件包含漏洞等。
解决办法:可以结合前面sablog源码中的函数进行改写(采用extract函数).
4、session_register
状态:已删除(session_unregister()、session_is_registered 删除)