반응형
XSS (Cross-Site-Scripting)
XSS 란 ?
→ Cross-Site-Scripting 의 약어로 사이트 간 스크립팅을 의미함 웹 APP 에서 많이 나타나는 취약점으로 웹사이트 관리자가 아니어도 악성 스크립트를 삽입 할 수 있습니다.
예를들어, form 안에 <script> alert(document.cookie); </script> 를 작성하면 alert 가 노출된다면 XSS가 뚫려있는 상태
XSS의 주요 목적
- 사이트 변조 보다는 사용자의 세션 탈취
- 취약한 사이트의 경우 관리자 계정을 훔쳐서 로그인을 할 수도 있음.
XSS 해킹 시나리오
- 악성 스크립트를 담은 게시물 등록
- 사용자들이 게시물에 접근
- 열람자 들의 쿠키 값을 가로챔
- 가로챈 쿠키 값을 프록시 툴을 이용하여 재전송
- 열람자의 정보로 로그인
- *만약에 열람자가 관리자라면 관리자로 로그인
XSS와 SQL Injection 의 차이점은?
→ SQL Injection 과 XSS 가 유사한데 SQL Injection 의 경우에는 parameter에 임의로 값을 조작하여 전달하여 악성 Query 를 실행하는 것에 목적이 있는 반면에, XSS는 Javascript 를 실행하는데에 있습니다. 둘다 취약하지만, DB 까지 접근하는 SQL Injection 이 더 취약한 것으로 보임.
XSS를 예방하는 방법
- 치환 : 정규식을 이용하여 파라미터 값 필터링을 한다. (간단한 방법이지만 임시 조치에 불과)
- function XSSCheck(str, level){ if(level == undefinded || level == 0){ str = str.replace(/\\<|\\>|\\"|\\'|\\%|\\;|\\(|\\)|\\&|\\+|\\-/g,""); } else if(level != undefined && level == 1){ str = str.replace(\\/</g. "<"); str = str.replace(\\/>/g. ">"); } return str; }
- XSS 취약점 보완 라이브러리 사용 : 라이브러리를 사용하는 것이 가장 안정적이고 많이 사용 하는 방식 (=국룰) 추천 라이브러리 종류는 OWASP Antisamy, NAVER XSS Filter, ESAPI가 있습니다.
참고
반응형