본문 바로가기

BE/Spring

[Spring] XSS 공격 대응 ( 크로스 사이트 스크립팅 )

 

 

 

 

 

XSS 공격 대응 ( 크로스 사이트 스크립팅 )

xss 란 ? ( Cross Site Scripting )

: 회원가입 등에서 입력 란에 <script></script> 스크립트 문법을 사용해서 작동시키는 공격 방식

( 예를 들어 회원가입 란에 <script>alert("성공");</script> 를 입력한 뒤 회원가입을 진행하면 스크립트문이 실행되면서 alert 창이 실행된다 )

회원가입 시 session_id 컬럼의 값을 지정해놓지 않아 오류가 발생하므로 컬럼 값을 지정하여 insert 해주고 session_id 컬럼에는 기본 값인 'nan' 으로 설정되게 한다

 

 

 

 

 

방법 1. ( 문자열 치환 메소드 선언 후 사용 )

<, >, " 등 문자가 저장될 때 문자를 치환해서 저장하는 로직을 추가한다

위와 같이 스크립트문에 필요한 문자를 치환하는 방법을 사용하면 xss 공격이 들어올 수 있는 모든 부분에 해당 메소드를 사용해서 문자를 치환처리해줘야 한다

 

 

 

 

 

방법 2. ( 네이버에서 제공해주는 라이브러리 사용 )

lucy-xss-servlet-filter-rule.xml
0.00MB
xss설정파일.txt
0.00MB

 

xss 설정파일.txt 파일 안에 있는 내용 pom.xml ( 라이브러리 추가 ) 과 web.xml ( 필터 추가 ) 에 추가

 

resources 하위에 lucy-xss-servlet-filter-rul.xml 파일 추가 ( 경로는 무조건 resources 하위여야 된다 )

 

네이버에서 제공하는 xss 공격 방어 방법을 사용하면 모든 경로에서 시도되는 xss 공격을 처리해준다

 

xss 공격을 차단하지 않은 경우

저장된 DB 데이터를 불러오는 도중 script 문을 만나 실행되는 모습

 

 xss 공격을 차단한 경우 

네이버에서 제공하는 xss 방지 라이브러리를 사용하면 스크립트문을 저장할때부터 작동되지 않게 저장이 된다

※ 만약 xss 공격을 차단하지 못하여 이미 script 문이 저장된 상태라면 뒤늦게 필터를 추가해도 추가적으로 저장되는 데이터에만 적용이되기 때문에 기존에 존재하는 데이터의 script 문은 처리가 되지 않는다 ※

※ 위 경우는 따로 출력문이나 DB 에서 데이터를 가져오는 부분에 로직을 추가해 처리해줘야 한다 ※

 

728x90
728x90