SQL インジェクションは、最も一般的なネットワーク攻撃手法の 1 つです。オペレーティング システムのバグを悪用して攻撃を行うのではなく、プログラミング中のプログラマの過失をターゲットにしており、悪意のあるユーザーは SQL の抜け穴を利用し、SQL ステートメントを使用してアカウントなしでログインしたり、データベースを改ざんしたりすることもあります。次の記事では、Java での SQL インジェクションを防ぐ方法をいくつか紹介しますので、ご参考になれば幸いです。
#Java で SQL インジェクションを防ぐ最も簡単な方法は、SQL スプライシングを排除することです。 SQL インジェクション攻撃は、元の SQL ステートメントに新しいロジックが追加されるため成功しますが、Statement の代わりに PreparedStatement を使用して SQL ステートメントを実行し、パラメーターのみを入力すると、SQL インジェクション攻撃手法は無効になります。
Java で SQL インジェクションを防ぐ方法を見てみましょう:
1. SQL インジェクションを処理する機能が組み込まれている、プリコンパイルされたステートメント セットを使用します。 setString メソッドで値を渡すことができます:
String sql= "select * from users where username=? and password=?; PreparedStatement preState = conn.prepareStatement(sql); preState.setString(1, userName); preState.setString(2, password); ResultSet rs = preState.executeQuery();
2. SQL インジェクションを防ぐために、正規表現を使用して一重引用符 (')、セミコロン (;)、およびコメント記号 (--) を含むステートメントを置き換えます。例:
public static String SQL(String str) { return str.replaceAll(".*([';]+|(--)+).*", " "); } userName=SQL(userName); password=SQL(password); String sql="select * from users where username='"+userName+"' and password='"+password+"' " Statement sta = conn.createStatement(); ResultSet rs = sta.executeQuery(sql);
以上がJavaでSQLインジェクションを防ぐ方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。