SQL クエリを操作する場合、ユーザー指定の入力をエスケープすることで SQL インジェクション攻撃を防ぐことが重要です。疑問が生じます: プリペアド ステートメントを利用する場合、mysql_real_escape_string() 関数はまだ必要ですか?
特定のクエリ内:
<code class="php">$consulta = $_REQUEST["term"]."%"; $sql = $db->prepare('select location from location_job where location like ?'); $sql->bind_param('s', $consulta); $sql->execute(); $sql->bind_result($location); $data = array(); while ($sql->fetch()) { $data[] = array('label' => $location); }</code>
プリペアド ステートメントはデータをクエリから分離することで SQL のセキュリティを強化し、SQL セキュリティを強化します。悪意のある注射。ただし、mysql_real_escape_string() が廃止されるわけではありません。
データ入力によってクエリが変更されないようにするには、コードを簡単に変更することでさらに安全性を高めることができます。
<code class="php">$sql->execute([$consulta]);</code>
これChange は、「?」を利用して、execute メソッドを通じてパラメータを直接渡します。プレースホルダー。ただし、HTML インジェクション攻撃を防ぐために、出力する前に htmlspecialchars() を通じてユーザー入力を処理することを忘れないでください。
プリペアド ステートメントの適切な使用法を遵守することで、mysql_real_escape_string() の必要性がなくなり、SQL クエリのセキュリティが強化されます。 .
以上がmysql_real_escape_string() はプリペアドステートメントでも必要ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。