我在每次提交中过滤来自用户的输入,或者我有一个创建函数,该函数操作get/post值并在每次提交表单时调用它。
但现在我在main include文件中保留了以下函数:
foreach ($_POST as $key => $value) {
$_POST[$key] = mysql_real_escape_string(trim($value));
}
foreach ($_GET as $key => $value) {
$_GET[$key] = mysql_real_escape_string(trim($value));
}它工作得很好,但是对每个post/get都这样做有什么缺点吗?附言:好的,除了剧本的表演。
发布于 2012-04-16 15:10:12
发布于 2012-04-16 15:11:18
这不是解决这个问题的合理方法。如前所述,这不会处理多维数组,如果突然需要处理原始值,这将是一件麻烦的事情。例如,有人可能想要保存一个文本区字段,并希望在底部留出几行,以便以后继续工作。这些行将在保存时消失。
表单验证可能也会变得有点混乱。
您的解决方案也不是100%安全的方法。你还是可以对抗XXS的。
除此之外,我知道没有一个框架会自动完成这项工作,而且他们可能不会这样做是有原因的。
发布于 2012-04-16 15:19:56
mysql_real_escape_string不能完全阻止SQL注入。让我们看下面的例子:
$input = mysql_real_escape_string($_POST['id']);
$query = "DELETE FROM user WHERE id={$input};";假设$_POST['id']等于1 OR TRUE
https://stackoverflow.com/questions/10169854
复制相似问题