Java 및 Kotlin 언어에서 안전하지 않은 문자열이 SQL 쿼리로 메서드에 전달되는 경우를 보고합니다.
이는 SQL 삽입의 원인이 될 수 있습니다.
메서드의 목록의 출처는 설정 - SQL, JPA QL, Hibernate QL 및 PostgreSQL의 언어 인젝션입니다
안전한 객체:
- 문자열 리터럴, 인터페이스 인스턴스, 열거형 객체, int 및 래퍼, 부울 및 래퍼, 클래스 객체
- 리시버와 인수가 안전한 메서드 호출의 결과
- 문자열 리터럴만 대입되고 안전한 이니셜라이저가 있는 같은 파일 내의 private 필드
- 안전한 이니셜라이저가 있는 같은 파일 내의 final 필드
- 안전한 객체에서 대입된 지역 변수
이 필드, 지역 변수 또는 매개변수는 메서드에 인수로 전달되거나 한정자로 사용되어서는 안 되며, 기본형, 래퍼 또는 불변이어야 합니다.
static final 필드는 안전한 것으로 간주됩니다.
이 분석은 한 파일 내에서만 수행됩니다.
예:
public void save(String sql) {
JdbcTemplate jdbcTemplate = new JdbcTemplate();
jdbcTemplate.queryForList(sql);
}
2023.2의 새로운 기능