0

次のようにクエリを使用しています。

FROM users u INNER JOIN FETCH u.roles where u.password='" + password + "'" + " AND u.username='" + username + "'";

SQLインジェクションを防ぐために、正規表現を使用して「ユーザー名」をフィルタリングし、「^[a-zA-Z0-9]*$」などの文字のホワイトリストのみを許可し、「パスワード」フィールドにはそのようなチェックを使用していますなので、

 if(password.indexOf("'") != -1) { Sql injection attack }

SQL インジェクション攻撃を成功させるために使用したチェックを攻撃者が回避する方法はありますか?

MySql v5.1を使用しています

ありがとう、

4

1 に答える 1

1

コードを改善するように私が言うことをモデレーターが承認しないように見えるので、答えは単に「はい、上記のコードに欠陥があります」です。

于 2012-09-19T14:48:33.470 に答える