5

多くの記事を読んでいるように、JPA / Hibernateクエリを使用する場合は、SQLインジェクションが回避されるように、クエリにパラメーターを設定することをお勧めします。好き:

select user from User user where user.name = :name and user.surname = :surname

私の問題は、クエリを作成するときにネイティブクエリを使用する必要がある場合があることです。

エンティティマネージャーとを使用しますcreateNativeQuery。ただし、この場合、パラメーターは定位置になります。好き:

select * from users where user_name = ? and user_surname = ?

次に、私のクエリではメソッドsetParameter(1, "name")などを使用します。この場合、パラメータ化されたクエリの場合のように「SQLインジェクションプルーフ」ですか?

4

2 に答える 2

4

次のようなクエリの作成に文字列操作を使用しない場合

"SELECT foo FROM bar Where id="+myParameter+" more sql ..."

、その後、脆弱性はありません。

于 2012-04-06T20:04:41.123 に答える
1

現在(私が間違っている場合、コミュニティは私を修正します)、最新のPDOデータベース抽象化レイヤー内に脆弱性は存在しません。

ただし、入力をサニタイズおよびフィルタリングしながら既知および未知のクエリをテストすると、ゼロデイエクスプロイトが発生した場合のインジェクションの可能性を排除するのに役立ちます。

私は現在、動的に作成されるすべてのクエリの前に、フィルタリング入力、文字セットの期待値、ストアドプロシージャ、および引数に対する厳密な要件の組み合わせを使用しています

于 2012-04-06T19:11:04.710 に答える