본문으로 바로가기

Sql Injection과 xss를 방지하기

category 기타/개발용어 2021. 8. 11. 08:15

* 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