在写入 MYSQL dB 之前,我使用此函数从字段中删除所有非数字:
function remove_non_numeric($inputtext) {return preg_replace("/[^0-9]/","",$inputtext);
这是否有效地转义输入数据以防止 SQL 注入?我可以将此函数包装在 中mysql_real_escape_string
,但认为这可能是多余的。
在写入 MYSQL dB 之前,我使用此函数从字段中删除所有非数字:
function remove_non_numeric($inputtext) {return preg_replace("/[^0-9]/","",$inputtext);
这是否有效地转义输入数据以防止 SQL 注入?我可以将此函数包装在 中mysql_real_escape_string
,但认为这可能是多余的。
当涉及到 sql 注入时,假设是所有问题的根源。无论如何将它包装在 mysql_real_escape_string 中。
它不会转义数据,但它确实是OWASP推荐方法的一个示例。
通过从输入中删除除数字之外的所有数字,您可以通过实施White list有效地防止 SQL 注入。没有多少偏执可以使生成的字符串(在这种特定情况下)成为有效的 SQL 注入有效负载。
但是,代码会老化和更改,并且会被新开发人员继承而被误解。因此,最重要的是,正确的建议,结束一切 - 是通过以下 3 个步骤中的一个或多个来积极防止 SQL 注入。按照这个顺序。曾经。单身的。时间。
mysql_real_escape_string
属于此类)。mysql_real_escape_string
不是所有反sql注入的答案。它甚至不是最强大的方法,但它确实有效。剥离除数字之外的所有值都是将安全值列入白名单,这也是一个不错的想法 - 但是,它们都不如使用安全 API 好。