SQL インジェクションは POST および GET リクエスト以外でも発生しますか?
SQL インジェクションは、ユーザー入力を Web アプリケーションに組み込む前に不適切にサニタイズする Web アプリケーションの脆弱性を悪用します。 SQL クエリ。この攻撃では POST メソッドと GET メソッドが一般的な手段ですが、SQL インジェクションは他の手段でも発生する可能性があります。
提供されたコードでは、mysql_real_escape_string を使用してユーザー入力をエンコードし、SQL インジェクションのリスクを軽減しています。ただし、コードのセキュリティは、このエンコーディングの一貫した適用に大きく依存しています。
サンプル コードの確認
1. POST メソッド
このコード例は、ユーザー入力を使用して変数を初期化します:
$name = trim($_POST['username']); $mail = trim($_POST['email']); $password = trim($_POST['password ']);
ユーザーの情報はデータベースに保存する前に適切にエンコードされます:
$sql = "INSERT INTO clients SET name='" . mysql_real_escape_string($name) . "', mail='" . mysql_real_escape_string($mail) . "', password='" . mysql_real_escape_string(sha1($password)) . "'";
2. GET メソッド
変数は URL から初期化されます:
$videoID = trim($_GET['videoID']); $userID = trim($_GET['userID']);
ここでも、SQL クエリは適切なエンコーディングを使用します:
$sql = "SELECT videoID FROM likes WHERE videoID = '" . mysql_real_escape_string($videoID) . "' AND UID = '" . mysql_real_escape_string($userID) . "' LIMIT 1";
結論
指定したコードには SQL インジェクションが含まれていませんユーザー入力をエンコードするために mysql_real_escape_string を一貫して使用することで、脆弱性が軽減されます。ソースに関係なく、すべてのユーザー入力にエンコードを慎重に適用する必要があることに注意することが不可欠です。セキュリティをさらに強化するには、プリペアド ステートメントで PDO を使用するという、より最新のアプローチを採用することを検討してください。
以上がSQL インジェクションは POST リクエストや GET リクエストを超えることができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。