2017-01-15 174 views
0

Spring Security JPAに関する情報や、.save()のようなメソッドがSQLインジェクションから保護されているかどうかを調べようとしています。SpringデータJPAはSQLインジェクションに対して安全です

たとえば、データベースに保存したいオブジェクトCustomer.があります。 私はそのエンティティを操作するためにCustomerRepository Spring実装を使用しています。 お客様のコンストラクターがユーザーのパラメーターを使用しています。すべてがステージングされたら、私は.save()を呼び出しています。これはSQLインジェクションに対して安全ですか?最初にチェックを行うべきですか?

答えて

2

.save()ネイティブクエリの使用のみが脆弱です。

List results = entityManager.createNativeQuery("Select * from Customer where name = " + name).getResultList(); 

パラメータを使用すると、安全なネイティブクエリを作成することもできます。

Query sqlQuery = entityManager.createNativeQuery("Select * from Customer where name = ?", Customer.class); 
List results = sqlQuery.setParameter(1, "John Doe").getResultList(); 
+0

たとえばCustomerオブジェクトにフィールド名があり、文字列に設定されている場合:Customerから* name = 'test'を選択し、save()メソッドを使用します。 – Dago

+0

JDBCドライバは、クエリが実行される前にこのデータを適切にエスケープします。 – jklee

関連する問題