* Sql Injection 방어하기

- Mybatis에서는 내부적으로 #{} ${} 두 가지 형식으로 파라미터를 받는다.

- #{} : 내부적으로 PreparedStatement를 사용하기 때문에 sql injection 공격에 안전하다. 

- ${}  : 파라미터가 바로 출력된다 -> SQL Injection 공격에 취약

 

* xss 방어하기

- lucy-xss-servlet-filter 적용

1. XML 설정 만으로 XSS 방어가 가능해짐

2. 비즈니스 레이어의 코드 수정이 발생하지 않음

3. 개발자가 XSS 방어를 신경 쓰지 않아도 됨

4. XSS 방어가 누락되지 않음

5. 설정 파일 하나로 XSS 방어절차가 파악됨

-> lucy의 필터링은 서블릿 설정으로 적용을 했기 때문에 form-data에 대해서만 적용되고 Request Raw Body로 넘어가는 JSON에 대해서는 처리해주지 않는다는 단점이 있음

 

->JSON에 대한 XSS가 필요하다면 Jackson의 CharacterEscapes를 상속하는 클래스 A를 직접 만들어서 처리해야할 특수문자를 지정하고 ObjectMapper에 A를 설정하고, ObjectMapper를 MessageConverter에 등록해서 Response가 클라이언트에 나가기 전에 XSS 방지 처리 해준다.

 

 

'개발용어' 카테고리의 다른 글

web server was의차이  (0) 2021.08.17
jquery.ready()와 .onload()의 차이점  (0) 2021.08.11
아파치와 톰캣의 차이점  (0) 2021.08.11
CORS (cross-origin resource sharing)란?  (0) 2021.07.15
추상클래스, 인터페이스  (0) 2021.07.15
복사했습니다!