关于php mysql 防注入,我的思路,求指点
将POST或GET接收的参数进行字符串转换操作,将“'"`!()=-”等等符号前面加个斜杠变成“\'\"\`\!\(\)\=\-“,这样可以吗?...
将POST或GET接收的参数进行字符串转换操作,将“ ' " ` ! ( ) = - ”等等符号前面加个斜杠变成“ \' \" \` \! \( \) \= \- “,这样可以吗?
展开
展开全部
一般思路就是这样。
但如果过滤太多字符,那你网站的正常使用也会受到很大影响。
php的addslashes()可以实现你所说的功能,但当你的SQL语句为$sql="select * from article where id=".$_GET['id'];时,过滤单引号什么的就不会起到什么作用。
再者,即使你的SQL语句换为$sql="select * from article where id='{$_GET['id']}'";也不见得保险。提交/t.php?id=%cf' or 1=1--%20也可以注入。具体可以百度一下双字节漏洞。
不过SQL注入也不是什么可怕的东西。例如对于要获取的数值数据,使用intval()过直接(int) $str;就可杜绝。对于字符变量就要注意了,要认真设置好数据库编码等等。
如果有好的编程习惯,注入什么的都不会怕滴。我也是php学习者,用php写了个博客www.fuxkit.com,欢迎来跟我交流^_^
但如果过滤太多字符,那你网站的正常使用也会受到很大影响。
php的addslashes()可以实现你所说的功能,但当你的SQL语句为$sql="select * from article where id=".$_GET['id'];时,过滤单引号什么的就不会起到什么作用。
再者,即使你的SQL语句换为$sql="select * from article where id='{$_GET['id']}'";也不见得保险。提交/t.php?id=%cf' or 1=1--%20也可以注入。具体可以百度一下双字节漏洞。
不过SQL注入也不是什么可怕的东西。例如对于要获取的数值数据,使用intval()过直接(int) $str;就可杜绝。对于字符变量就要注意了,要认真设置好数据库编码等等。
如果有好的编程习惯,注入什么的都不会怕滴。我也是php学习者,用php写了个博客www.fuxkit.com,欢迎来跟我交流^_^
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询