发布网友 发布时间:2022-04-08 03:05
共1个回答
热心网友 时间:2022-04-08 04:34
你好,我试着帮你回答下吧:PHP的MySQL和MySQLi扩展在处理畸形数据的SQL请求时,远程攻击者可能利用此漏洞执行SQL注入攻击。PHP的MySQL和MySQLi扩展没有正确地处理包含有LOCAL INFILE的SQL查询请求,如果远程攻击者向安装了这些扩展的服务器提交了恶意SQL请求的话,就可以绕过open_basedir和safe_mode安全*,执行非授权操作。请注意不要依赖于共享主机MySQLd local-infile=0选项,因为这个选项是服务器选项,因此不会影响客户端。另外:php里,copy等一些文件操作函数有漏洞。其实防注入没有那么复杂,php不像asp 一般如果是整形的数据,建议获取的时候都intval一下,字符串的一般都转义一下就全部OK。 具体如下: 1. 关闭全局变量 register_global = off 2. 打开 magic_quotes_gpc = On 3. 打开 safe_mode = On 4. 过滤变量,不管是get方式还是post方式的数据一律过滤,记得有个强人说过:不要相信任何用户提交的数据。 整型数据获取的时候一般都intval一下,如:$int_var = intval($int_var) 字符串get方式的,一般可以过滤的方式,比如象我使用正则匹配的方式,不过不是特别好,一般转义一下就可以了。 5. 初始化你的变量 建议参考以下文章: http://blog.csdn.net/heiyeshuwu/archive/2005/06/14/394225.aspx (我写的,不强) http://blog.csdn.net/heiyeshuwu/archive/2005/07/14/424814.aspx (英文的,但是很强) 其实一般 magic_quotes_gpc = On 了,字符串的代码也起不了作用,对了,还有一个忘记说了,最好在你的sql里面都加上单引号,比如: 整型变量:$sql = "SELECT * FROM tbl_name WHERE tid = '$id' "; 字符串变量:$sql = "SELECT * FROM tbl_name WHERE title = '$title' "; 那样的话,注入的时候就会出错了,呵呵 另外,还建议你参考下,安全天使的文章,里面很多关于如何注入的,知道攻了,就知道怎么防了: http://www.4ngel.net/article/36.htm http://www.4ngel.net/article/30.htm http://www.4ngel.net 其实以上一般是安全性问题,但事实是php确实有一个漏洞,早在06年3月就发现了,他再phpbb2.0以下都可以找到,黑客们一般会在google上搜索phpbb 2.0或者类似的关键字进行大规模的对论坛类php查找。然后把查到的地址输入到command execution里,通过这个软件对论坛进行入侵,接下来黑客会在你的电脑里建一个txt文件,并把木马上传到你的电脑里,修改论坛主页,这会给论坛造成相当大的损害,针对这一点,我们可以下载最新版的phpbb ,在最新办里已经成功的解决了他的漏洞,可以到 www.xunlei.com 下载,二是直接修改viewtiop文件。希望以上能对你有所帮助!