솔루션 ID (정수)를 기반으로 소위 ProductSolutions를 찾을 수있는 응용 프로그램 용 API를 개발 중입니다.XSS 공격 : 스프링 부트 CRUDRepository에서 예외가 발생 했습니까?
코드는 다음과 같습니다
변환하지 못했습니다
이@Repository public interface ProductSolutionRepository extends CrudRepository<ProductSolution, String> { public List<ProductSolution> findBySolutionId(@Param("solutionId") int solutionId); }
대신 정수의 문자열로 요청을 전송 (
localhost:8080/api/v1/productSolutions/search/findBySolutionId?solutionId=dangerousscript
)이 API는 다음과 같은 메시지와 함께 오류를 반환 형식 [java.lang.String]에서 값을 입력하십시오. [@ org.springframework.data.repository.query.Param int] 값이 인 경우 'dangerousscript'; 상자의 예외는 java.lang.NumberFormatException의이다 : 입력 문자열의 경우 : "dangerousscript \" "`
가 크롬과 파이어 폭스 깔끔하게 입력을 탈출하는 (및 스크립트를 실행하지 않음) 것처럼 보이지만
명 \ 여전히 우리의 API가 교차 사이트 스크립팅 공격에 사용될 수도 있습니다.간단한 해결책은 예외를 던질 때 사용자가 입력 한 내용을 제거하거나 자체 오류 페이지를 만드는 것입니다. 사용자 정의 예외가 발생하도록 스프링 부트를 구성 하시겠습니까?
이것은 사이트 간 스크립팅과 관련이 없습니다. Spring이 정수를 기대하고 예외를 올바르게 반환하는 문자열을 보내려고한다는 것입니다. 정확히 그게 문제가 될지 모르겠군요? – g00glen00b