「mysqli_real_escape_string」は SQL 攻撃の防止に適切ですか?
提供されたコードは、SQL インジェクションから保護するために mysqli_real_escape_string を利用しています。ただし、この関数だけでは完全な保護には不十分であることに注意することが重要です。
SQL インジェクションに対する脆弱性
mysqli_real_escape_string を採用しているにもかかわらず、コードは SQL インジェクション攻撃の影響を受けやすいままです。 。これは、文字列の連結を使用して SQL クエリを組み立てるため、攻撃者がフォーム入力を通じて悪意のあるコードを挿入してクエリを操作できるようになるためです。
推奨される解決策: 準備されたステートメント
SQL インジェクションを防ぐ最も効果的な方法は、準備されたステートメントを使用することです。データパラメータをクエリ命令から分離し、汚染の可能性を排除します。以下に例を示します。
$stmt = $db_con->prepare("INSERT INTO `users` (`email`, `psw`) VALUES (?, ?)"); $stmt->bind_param("ss", $email, $psw); $stmt->execute();
追加のセキュリティ対策
準備されたステートメントが実行できない場合は、次のことを検討してください。
これらの対策を実装することで、SQL インジェクションやその他の SQL 攻撃に対するアプリケーションのセキュリティを大幅に強化できます。
以上が「mysqli_real_escape_string」は SQL インジェクション攻撃を防ぐのに十分ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。