私はこの次のコードでは二次のSQLインジェクションに直面してきた(春アプリケーション)
if(subjectId!=null){Query query= sessionFactory
.getCurrentSession()
.createSQLQuery(HubQueryConstants.GET_QUERY)
.setParameter(MyConstants.SUBJECT_ID, subjectId)
.setFirstResult(offset)
.setMaxResults(limit)
.setResultTransformer(
Transformers.aliasToBean(MyClass.class));}
私の定数ファイルは以下のとおりです。
定数ファイルがfinalクラスでありますそれは、デフォルトでは、静的なクエリであるにもかかわらず
GET_QUERY="Select * from MyClass where id=:id ";
まだ私のセキュリティレポートは、2次のSQLインジェクションとしてそれを与えている
インターフェイスに定数を宣言する必要がありますか?セキュリティ問題を回避するには?
の終わりにNamedNativeQuersを使用してチュートリアルを見つけます。 – Andreas
私はあなたのクエリのidパラメータにsqlを挿入できるという懸念があると思います。しかし、あなたのhibernate(私は推測すると)あなたのクエリがpreparedStementに変換されているので。だからあなたは救われるべきです。 – EisenRatte
私は上記のスニペットでSqlクエリを使用していますが、HQLクエリを使用していますが、私のレポートでは2番目のSQLインジェクションが表示されています –