我使用此函数在写入MYSQL dB之前从字段中去除所有非数字:
function remove_non_numeric($inputtext) {return preg_replace("/[^0-9]/","",$inputtext);
这是否有效地逃避输入数据以防止SQL注入?我可以在mysql_real_escape_string
中包装此函数,但认为这可能是多余的。
答案 0 :(得分:3)
当涉及sql注入时,假设是所有 bleep 的母亲。无论如何将它包装在mysql_real_escape_string中。
答案 1 :(得分:0)
它不会逃避数据,但它确实是推荐OWASP方法的一个例子。
通过从输入中删除除数字之外的所有内容,您可以通过实现White list来有效地防止SQL注入。没有任何偏执可以使得到的字符串(在此特定情况下)成为有效的SQL注入有效负载。
然而,代码老化和变化被误解为新开发人员继承的。因此,底线,正确的建议,结束所有和全部 - 是通过以下一个或多个步骤主动防止SQL注入。按此顺序。永远。单。时间。
mysql_real_escape_string
属于此类别。) mysql_real_escape_string
不是所有反sql注入的答案。它甚至不是最强大的方法,但它的工作原理。除了数字之外的所有数据都是白色的,列出了安全值并且也是一个合理的想法 - 然而,它们都不如使用安全API。