重複の可能性:
PHP で SQL インジェクションを停止する最良の方法
MySQL データベースを利用し、URL からフォームと変数を処理する PHP を使用して Web サイトを作成しています。変数は、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.");
}
}
...
この関数は十分に堅牢ですか? 他に何かするべきですか?