关于php的magic_quotes_gpc
Posted in code, 安全相关 on 8月 8th, 2009 by 飘(piao2010) – 2 Comments今天暂时没有任务,偷偷关注一下安全方面的东东。上午回味了一下安全天使的两篇经典文章
http://www.4ngel.net/article/36.htm
http://www.4ngel.net/article/30.htm
总结出两点:
1。无论如何(即使magic_quotes_gpc=On还是可以采用char()等函数进行注射)数字型变量(SQL语句中没有用引号包围的变量)一定要进行过滤,常用intval()函数处理,
2。字符型变量(SQL语句中用引号包围的变量):
当 magic_quotes_gpc=Off 时一定要进行过滤,常用addslashes()函数处理。
当 magic_quotes_gpc=On 时程序会自动进行转义处理,注射成功的可能性较小,但也有一些程序会自动去掉magic_quotes_gpc造成的影响,造成可以继续注射。
因此为了安全起见,允许对php进行配置的话magic_quotes_gpc尽量设置成On,如果是虚拟主机的话只能尽量在程序上避免出问题了。
关于各种情下magic_quotes_gpc对数据库操作的影响总结如下:
1. 对于magic_quotes_gpc=on的情况,
我们可以不对输入和输出数据库的字符串数据作
addslashes()和stripslashes()的操作,数据也会正常显示。
如果此时你对输入的数据作了addslashes()处理,
那么在输出的时候就必须使用stripslashes()去掉多余的反斜杠。
2. 对于magic_quotes_gpc=off 的情况 read more »