ADOdb での SQL インジェクションと一般的な Web サイトのセキュリティについて
SQL インジェクションは、ユーザー入力が不適切にエンコードされている場合に発生し、Web サイトのセキュリティが侵害される可能性があります。このような攻撃は一般に POST メソッドと GET メソッドに関連付けられていますが、さまざまなシナリオで発生する可能性があります。
SQL インジェクションの例
POST メソッドを使用した提供されたコードを検討してください。
$name = trim($_POST['username']); $mail = trim($_POST['email']); $password = trim($_POST['password ']); if ($errors == "false") { $sql = "INSERT INTO clients SET name='" . mysql_real_escape_string($name) . "', mail='" . mysql_real_escape_string($mail) . "', password='" . mysql_real_escape_string(sha1($password)) . "'"; $connection->execute($sql); }
このコードは、mysql_real_escape_string を使用してユーザー入力をエスケープし、SQL インジェクションを防ぎます。
次に、GET メソッドを使用したコードを考えてみましょう。
$sql = "SELECT videoID FROM likes WHERE videoID = '" .mysql_real_escape_string($videoID). "' AND UID = '" .mysql_real_escape_string($userID). "' LIMIT 1"; $connection->execute($sql);
ここでも、mysql_real_escape_string がエンコードに使用されます。このコードのセキュリティを確保します。
どちらの場合も、mysql_real_escape_string を使用すると、ユーザー入力を適切にエスケープすることで攻撃を防ぎます。ただし、潜在的な脆弱性を軽減するには、非定数入力を常にユーザー入力として扱うことが重要です。
SQL インジェクションの軽減
セキュリティを強化し、SQL インジェクションを防止するには、準備されたステートメントで PDO を使用することをお勧めします。この最新のアプローチにより、ユーザー入力が適切にエンコードされ、潜在的なセキュリティ侵害が排除されます。
以上がPDO を使用したプリペアド ステートメントはどのように Web サイトのセキュリティを強化し、SQL インジェクションを防ぐことができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。