我正在使用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.");
}
}
...
这个功能足够强大吗?我应该做什么吗?
答案 0 :(得分:2)
可能值得一读this post。
答案 1 :(得分:1)
最好的方式是什么......
没有最好的办法。这取决于具体情况。
..从..
清理POST / GET变量
数据的好坏是一种有缺陷的思维模式。数据只是数据。它是使用它的环境,使其成为恶意或非恶意。如果在数据库服务器上执行它们,那么某些单词可能会很糟糕。如果你把它们展示给未成年人,有些话是不好的。这是关于背景的。