【发布时间】:2014-02-25 03:45:12
【问题描述】:
我将尝试使用下面的示例代码使这一内容简短明了。您是否认为这对于任何形式的 SQL 注入都是一个问题......?
$tmpVar = isset($_POST['somePostVar']) ? pg_escape_string(utf8_encode(preg_replace('/[^a-z0-9_]+/i', '', filter_var($_POST['somePostVar'], FILTER_SANITIZE_STRING)))) : 'error';
虽然我知道使用所有四种方法可能会出现一些过度杀戮/冗余..我仍然宁愿安全而不是抱歉,因此在这里询问。
这个结果变量将用作
SELECT * FROM table_name WHERE someCol='$tmpVar'
现在我知道周围有类似这样的重复问题,我明白这一点,虽然不是 StackOverFlow 上的主要海报...每日浏览器并使用我...
所以使用 pg_escape_string、utf8_encode、preg_replace 和 filter_var...这个字符串仅限于带有下划线的字母数字。它可以通过 SQL 注入的形式轻松破解
utf8_encode 也在这里,因为 postgresql 在使用 pg_escape_string 时可能会出现问题。所以在这种情况下它们是齐头并进的。
【问题讨论】:
-
请理解我确实知道每个函数的作用,而且有些函数可能会过度杀伤字符串。但有些情况需要考虑,其中一个简单的修复并不总是像看起来那么容易。 . 问题是这个特定的字符串仍然可以通过注射破坏......
标签: sql postgresql escaping preg-replace filter-var