从表单/ URL清理POST / GET变量的最佳方法?

时间:2009-05-19 17:12:48

标签: php post get sanitization

  

可能重复:
  Best way to stop SQL Injection in PHP

我正在使用PHP创建一个网站,该网站使用MySQL数据库并处理URL中的表单和变量。这些变量用于动态构造SQL查询字符串。所以我需要一个强大的解决方案,以确保没有人尝试SQL注入等。我的一个朋友说,我真的只应该使用存储过程来访问数据库,但这不是真的可行,因为我正在使用的主机不不允许这些。

这是我正在使用的代码(它是包装DB命令的类的一部分):

...
public function Sanitize($Variable)
{
    if(is_resource($this->ServerConnection))
    {
        $Variable = str_replace(";", "", $Variable);
        if(get_magic_quotes_gpc())
        {
            if(ini_get('magic_quotes_sybase'))
            {
                $Variable = str_replace("''", "'", $Variable);
            }
            else
            {
                $Variable = stripslashes($Variable);
            }
        }
        return mysql_real_escape_string($Variable, $this->ServerConnection);
    }
    else
    {
        $this->PrintError("The Sanitize function is not available as there is no server connection.");
    }
}
...

这个功能足够强大吗?我应该做什么吗?

2 个答案:

答案 0 :(得分:2)

可能值得一读this post

答案 1 :(得分:1)

  

最好的方式是什么......

没有最好的办法。这取决于具体情况。

  

..从..

清理POST / GET变量

数据的好坏是一种有缺陷的思维模式。数据只是数据。它是使用它的环境,使其成为恶意或非恶意。如果在数据库服务器上执行它们,那么某些单词可能会很糟糕。如果你把它们展示给未成年人,有些话是不好的。这是关于背景的。