私はこのクエリを持っています:
DELETE FROM users WHERE user_email = '$email'
すべてのレコードを削除する SQL インジェクション攻撃を受けるにはどうすればよいですか?
addslashes()
関数は$email
、クエリに送信する前に適用されます。
私はこのクエリを持っています:
DELETE FROM users WHERE user_email = '$email'
すべてのレコードを削除する SQL インジェクション攻撃を受けるにはどうすればよいですか?
addslashes()
関数は$email
、クエリに送信する前に適用されます。
使用している場合は、 PDOStatementPDO
を使用または使用できます。これにより、データがサニタイズされ、すべての公開されている既知の特殊文字が SQL インジェクションとして使用されるのを回避できます。$pdo->quote($var)
bindParam
bindValue($var, PDO::INT_PARAM)
編集
これは、各データベースに独自の予約語があるためです。
データベースに間違ったエンコーディングが設定されている場合は、次のようにアドスラッシュをバイパスできます (これは UTF-8 では機能しません)。
$email = urldecode('%BF%27 OR 1 -- '); // user input
$email = addslashes($email);
$sql = "DELETE FROM users WHERE user_email = '$email'";
a\
が%27
( '
) の前に追加され%BF
、ブラックスラッシュが有効なマルチバイト文字になるため