ホームページ >データベース >mysql チュートリアル >Java の PreparedStatement は SQL インジェクションの脆弱性をどのように防ぐことができますか?
信頼できないユーザー入力によるデータベース テーブルの更新におけるセキュリティ上の懸念に対処するには、次のことを行う必要があります。 SQL インジェクション攻撃。 SQL インジェクションは、悪意のあるコードがユーザー指定のデータに埋め込まれ、SQL クエリの一部として実行されるときに発生します。
指定されたコード スニペット内:
String insert = "INSERT INTO customer(name,address,email) VALUES('" + name + "','" + addre + "','" + email + "');";
値の name、adre、および電子メールはユーザー入力から送信されます。攻撃者は、これらの値内に DROP TABLE customer; などの悪意のあるコードを含めることでこれを悪用する可能性があります。
SQL インジェクションを防ぐには、Java の PreparedStatement クラスを使用することが重要です。このクラスはクエリ構築とパラメータ設定を分離し、悪意のあるコードがクエリに直接含まれるのを防ぎます。
String insert = "INSERT INTO customer(name,address,email) VALUES(?, ?, ?);"; PreparedStatement ps = connection.prepareStatement(insert); ps.setString(1, name); ps.setString(2, addre); ps.setString(3, email); ResultSet rs = ps.executeQuery();
PreparedStatement を使用すると、ユーザー指定の値はクエリ文字列に追加されるのではなく、パラメータとして設定されます。 。この方法では、これらはデータとして扱われ、悪意のあるコードとして実行することはできません。
Java GUI のコンテキストでは、ユーザー入力は JTextFields から取得され、同じ原則が適用されます。安全に実行するには、これらのフィールドに入力された値を PreparedStatement パラメータに渡す必要があります。
この方法を実装することで、SQL インジェクション攻撃を効果的に軽減し、アプリケーションのセキュリティを確保できます。
以上がJava の PreparedStatement は SQL インジェクションの脆弱性をどのように防ぐことができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。