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

青灯夜游
リリース: 2019-05-06 17:31:14
オリジナル
4719 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!