簡単なもの。
mysqlを使用する古いWebアプリケーションをmysqliに移行中です。私は以前、次のように書いたカスタムサニテーション関数を使用してSQLインジェクションから保護していました。
function sani($text=""){
if (!is_array($text)) {
$text = str_replace("<", "<", $text);
$text = str_replace(">", ">", $text);
$text = str_replace("\"", """, $text);
$text = str_replace("'", "'", $text);
return $text;
}
}
彼らは私がこれを使用していた方法:
mysql_query("SELECT * FROM `table` WHERE `username` = '" . $sani($userinput) . "'");
基本的には、htmlエンコーディングへのインジェクションに使用できるシンボルを変更するだけです。これまでは問題なく動作していましたが、mysqliに移行しているので、プリペアドステートメントがこの関数よりも安全かどうかを知りたいと思いました。
また、準備されたステートメントと準備されていないステートメントの速度の違いについてたくさん読んだことがありますが、それは本当に目立ちますか?私は1秒間に約100回のクエリを実行するので、大きな影響を受けるとは思えません。
ありがとう!