Java と Kotlin 言語で安全でない文字列が SQL クエリとしてメソッドに渡されている状況を報告します。
このような状況では SQL インジェクションが発生する可能性があります。
SQL、JPA QL、Hibernate QL、および PostgreSQL のメソッドのリストは「設定 - 言語インジェクション」から取得されます。
安全なオブジェクトには次のものがあります。
- 文字列リテラル、インターフェースインスタンス、または列挙型オブジェクト、int とそのラッパー、boolean とそのラッパー、クラスオブジェクト
- レシーバーと引数が安全なメソッドの呼び出しの結果
- 文字列リテラルでのみ割り当てられ、安全なイニシャライザーを持つ同じファイル内の private フィールド
- 安全なイニシャライザーを持つ同じファイル内の final フィールド
- 安全なオブジェクトから割り当てられるローカル変数
このフィールド、ローカル変数、またはパラメーターは、メソッドに引数として渡したり、修飾子として使用したりすることはできず、プリミティブ、そのラッパー、または変更不可である必要があります。
static final フィールドは安全と見なされます。
解析は 1 つのファイル内でのみ実行されます。
例:
public void save(String sql) {
JdbcTemplate jdbcTemplate = new JdbcTemplate();
jdbcTemplate.queryForList(sql);
}
2023.2 の新機能です