ホームページ  >  記事  >  Java  >  JavaでSQLインジェクションを防ぐ方法

JavaでSQLインジェクションを防ぐ方法

青灯夜游
青灯夜游オリジナル
2019-05-06 17:31:144745ブラウズ

SQL インジェクションは、最も一般的なネットワーク攻撃手法の 1 つです。オペレーティング システムのバグを悪用して攻撃を行うのではなく、プログラミング中のプログラマの過失をターゲットにしており、悪意のあるユーザーは SQL の抜け穴を利用し、SQL ステートメントを使用してアカウントなしでログインしたり、データベースを改ざんしたりすることもあります。次の記事では、Java での 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。