Spring 용 @Query 주석에 전달 된 문자열의 매개 변수가 PreparedStatement 클래스 또는 SQL 주입을 방지하기위한 모든 메서드를 사용하는 것처럼 순수한 데이터로 처리됩니까?스프링 SQL 인젝션의 @Query 주석은 안전한가요?
final String MY_QUERY = "SELECT * FROM some_table WHERE some_column = ?1";
@Query(value=MY_QUERY, nativeQuery = true)
List<SomeEntity> findResults(String potentiallyMaliciousUserInput);
결론 :는 SQL 인젝션에 취약 위의 코드인가?
MY_QUERY는 (정적이 아니어야합니까?) – tkr
@tkr 예 그렇습니다. 쿼리에 피드되도록 쿼리 구성 요소를 동적으로 작성하려고 할 때 문제가 발생했습니다. 나는 매개 변수 만이 당신이 변화에 접근 할 수 있다고 믿습니다. –
사실 이것은 의도적으로 생각합니다. 이렇게하면 문자열 연결을 사용하여 SQL을 빌드하지 않고 적절한 준비된 명령문 매개 변수를 사용하여 빌드 할 수 있습니다. (그러나 나는 확실히 모르겠다.) – tkr