오늘날 웹서비스에서는 토큰을 사용하여 사용자들의 인증 작업을 처리하는 것이 가장 좋은 방법이다.
토큰 기반의 인증 시스템에서 주로 사용하는 방법인 JWT에 대해 알아보자.
JWT란?
JWT란 Json 포맷을 이용하여 사용자에 대한 속정을 저장하는 Claim 기반의 Web Token이다.
Json 포맷이란?
JavaScript Object Notation (JSON)은 Javascript 객체 문법으로 구조화된 데이터를 표현하기 위한 문자 기반의 표준 포맷입니다
웹에서 데이터를 전송할 때 일반적으로 사용한다.
크로스 사이트 스크립팅은 공격자가 상대방의 브라우저에 스크립트가 실행되도록 해 사용자의 세션을 가로채거나, 웹사이트를 변조하거나, 악의적 콘텐츠를 삽입하거나, 피싱 공격을 진행하는 것을 말한다. XSS 공격은 스크립트 언어와 취약한 코드를 공격 대상으로 한다.
이런 XSS 공격은 Reflected XSS와 Sored XSS 그리고 DOM Based XSS 크게 세 가지로 분류할 수 있다.
Reflected XSS
웹사이트에 아이디나 비밀번호 또는 게시물 내용을 입력하는 부분이 있다고 가정해보자.
입력창에 html에 script태그를 넣어도 별다른 필터링 없이 실행이 된다.
공격자는 이러한 취약점이 존재하는 페이지를 미리 탐색한 후에 XSS 공격을 위한 스크립트가 포함 된 URL을 공격 대상자에게 노출시키는 방법으로 공격을 수행하게 된다.
Stored XSS
Sored XSS는 Reflected XSS와는 달리 웹 사이트의 게시판에 스크립트를 삽입하는 공격 방
공격자는 게시판에 스크립트를 삽입한 후 공격 대상자가 해당 게시글을 클릭하도록 유도한다.
공격자가 미리 XSS 공격에 취약한 웹사이트를 탐색하고 공격을 위한 스크립트를 포함 한 게시글을 웹 사이트에 업로드 한다.
게시글의 URL을 사용자에게 노출하고 사용자가 게시글을 확인함으로써 URL에 대한 요청을 서버에 전송하게 된다.
웹 서버에서 스크립트를 포함한 Response를 전송하며 공격이 수행된다.
DOM Based XSS
Dom Based XSS는 피해자의 브라우저에서 DOM 환경을 수정하여 클라이언트 측 코드가 예상치 못한 방식으로 공격 구문이 실행되는 XSS 공격이다.
즉, 페이지 자체(HTTP 응답)는 변경되지 않지만, 페이지에 포함된 클라이언트 측 코드는 DOM환경에서 발생한 악의적인 변조로 인해 공격 구문이 실행된다.
CSRF(Cross-Site Request Forgery)란 변역하자면 사이트 간 요청 위조 이다.
웹 에플리케이션 취약점 중 하나로 사용자가 자신의 의지와 무관하게 공격자가 의도한 행동을 해서 특정 웹페이지를 보안에 취약하게 한다거나 수정, 삭제 등의 작업을 하게 만드는 공격방법이다.
공격방법
이러한 공격을 하기 위해서는 해커는 사이트를 먼저 분석을한다.
예를 들어 웹 사이트의 주소의 패턴을 파악한 후 웹 사이트 주소의 일련번호 같은 것을 알아낸후 일반적인 방법으로는 접근할 수 없는 페이지를 오픈한다던지, 개발에 사용되고 실제로는 사용하지 않는 샘플 페이지를 찾아낸다든지 등의 행위가 가능하다.
#출처
JWT : https://mangkyu.tistory.com/56
XSS : https://4rgos.tistory.com/1 , https://4rgos.tistory.com/1
CSRF : https://namu.wiki/w/CSRF