0

私はこのクエリを持っています:

DELETE FROM users WHERE user_email = '$email'

すべてのレコードを削除する SQL インジェクション攻撃を受けるにはどうすればよいですか? addslashes()関数は$email、クエリに送信する前に適用されます。

4

2 に答える 2

1

使用している場合は、 PDOStatementPDOを使用または使用できます。これにより、データがサニタイズされ、すべての公開されている既知の特殊文字が SQL インジェクションとして使用されるのを回避できます。$pdo->quote($var)bindParambindValue($var, PDO::INT_PARAM)

編集

これは、各データベースに独自の予約語があるためです。

于 2013-01-28T12:18:21.507 に答える
1

データベースに間違ったエンコーディングが設定されている場合は、次のようにアドスラッシュをバイパスできます (これは UTF-8 では機能しません)。

$email = urldecode('%BF%27 OR 1 -- '); // user input

$email = addslashes($email);
$sql = "DELETE FROM users WHERE user_email = '$email'";

a\%27( ') の前に追加され%BF、ブラックスラッシュが有効なマルチバイト文字になるため

これは、これを説明するブログ記事です

于 2013-01-28T12:11:46.180 に答える