* 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 |