-
Cross-site Scripting Attack (XSS)concept/server 2020. 11. 1. 20:02
educative 를 요약한 자료입니다.
What is a Cross-site Scripting attack?
xss 공격은 악성 스크립트가 웹사이트에 주입된 공격의 한 종류
유저가 해당 웹사이트에 접속한 경우 악성 스크립트가 실행되고 해커는 유저의 브라우저로부터 기밀 정보를 가지고 간다.
이 공격은 유저가 어떤 정보를 입력하고 그 정보를 데이터베이스에 저장할 수 있는 웹사이트를 대상으로 한다.
Types of Cross-site Scripting Attack
1. Stored Cross-site Scripting Attack
해커는 입력하는 칸 (input box)에 악성 코드를 입력하고, 그 코드는 웹 사이트의 데이터베이스에 저장될 것이다.
그리고나서 유저가 이 웹사이트를 열면 악성 스크립트가 담긴 코멘트가 브라우저에서 실행됨과 동시에 해커의 공격을 받게 된다.
악성 스크립트 공격은 다음 방식으로 공격이 가능하다.
- 공격 대상자의 키 입력을 캡처하기 위한 브라우저 기반 키 로거 설치.
이것은 공격자가 소셜 미디어 암호, 이메일 암호, 신용카드 정보, 은행 암호 등에 접근하기 위해 사용할 수 있기 때문에 위험하다. - CSRF 공격과 같은 다른 종류의 공격을 촉발하는 데 사용될 수 있는 사용자의 세션 쿠키를 캡처하는 것.
- 유저를 다른 악성 웹사이트로 리다이렉팅 시킨다.
2. Reflected Cross-site Scripting Attack
이 경우의 공격은 해커가 유저에게 악성 스크립트가 담긴 링크를 클릭하게 함으로써 실행된다.
이 공격이 XSS를 심는 것보다 조금 더 실행하기 어렵다.
유저는 이 악성 링크가 담긴 웹사이트를 이메일, 검색, 광고클릭 등을 통해서 접근하게 된다.
클릭과 동시에 유저의 브라우저에서 악성 스크립트가 실행되고, 브라우저의 데이터(예를 들어 쿠키) 를 해커에게 전송한다.
How to prevent XSS
* XSS는 웹사이트에 악성코드를 주입하는 방식으로 작동하기 때문에!
웹사이트 개발자는 사용자 입력들이 데이터베이스에 저장이 되기 전에 이 정보가 검증된 정보인지 확인해야 한다.
여기서의 이론은 모든 데이터나 입력이 유형과 길이 요건과 같은 특정 기준을 통과할 때까지 악의적인 것으로 취급하는 것이다.
(철저한 보안을 위해서는 의심부터 하고 보자)
* 사용자 입력을 삭제하는 것은 기본적으로 HTML 마크업과 자바스크립트 코드에 주로 사용되는 잠재적으로 위험한 기호로 모든 사용자 데이터를 정리해야 하는 또 다른 방법이다.
사용자 입력에서 HTML 태그를 블랙리스트에 올리는 도구들이 많이 있다. 웹 사이트가 사용자 입력에 HTML을 허용하면 이러한 도구를 사용하여 악성 코드를 만드는 태그를 블랙리스트에 올릴 수 있다.
(특히 <script> 태그에 해당)
'concept > server' 카테고리의 다른 글
OAuth 2.0 Intro, 용어 (0) 2020.11.02 Cross-site Request Forgery (CSRF) (0) 2020.11.01 이 문제들을 다 풀면 session 이해 완료! (0) 2020.07.12 Server & Node 알고 넘어가야 할 요점 정리 (0) 2020.06.11 Web Architectures 정리 (0) 2020.06.10 - 공격 대상자의 키 입력을 캡처하기 위한 브라우저 기반 키 로거 설치.