我知道SQL注入可以通过
mysql_real_escape_string();
但是,如何消毒盲SQL注入,以及它与普通sql注入有何不同。
发布于 2016-09-18 08:06:33
盲SQL注入和“普通”SQL注入都是SQL注入,即攻击者能够修改发送到数据库的SQL语句。唯一的区别是,使用盲SQL注入,攻击者不会看到任何明显的结果(即数据库返回的数据),而只能从时间、错误消息或数据库中发生的类似事件中扣除。有关详细信息,请参阅OWASP。
因为盲SQL注入和“正常”SQL注入的原因是相同的,所以预防也是一样的,即确保攻击者不能恶意修改SQL。这样做的首选方法是参数绑定而不是转义(即mysql_real_escape_string
)。有关如何正确执行的更多信息,请参见鲍比表:防止SQL注入的指南,它既描述了问题,也提供了各种语言(如用于PHP )的解决方案。
发布于 2016-09-18 07:58:55
使用参数化查询!http://php.net/manual/en/mysqli.quickstart.prepared-statements.php http://php.net/manual/en/pdo.prepared-statements.php
这样,您也就不必总是担心每次都要在每次查询中转义所有的东西。
另外,我想提一下,mysql_real_escape_string();
已经过时了。
mysqli_real_escape_string();
是当前支持的版本。
https://security.stackexchange.com/questions/137071
复制相似问题