token, XSS, CSRF

Park Bumsoo·2022년 4월 24일
0

token

token은 우리가 개인정보를 인증 받을 때 발급받는 고유값이며
우리는 이 토큰을 이용한 방법을 토큰 기반 인증 이라고 한다.
토큰의 인증 절차는 아래 순서에 따라 진행이 된다.

  • 요청: 사용자가 서버 또는 보호되는 리소스에 대한 액세스를 요청합니다. 이때 비밀번호를 이용한 로그인이나 그 밖에 지정된 프로세스가 개입될 수 있습니다.
  • 확인: 서버가 해당 사용자의 액세스 여부를 확인합니다. 이때는 사용자 이름에 대한 비밀번호 확인 또는 그 밖에 지정된 프로세스가 개입됩니다.
  • 토큰: 서버가 링, 키, 휴대전화와 등의 인증 디바이스와 통신합니다. 확인을 마치면 서버가 토큰을 발급하여 사용자에게 전달합니다.
  • 저장: 작업이 지속되는 동안 토큰이 사용자의 브라우저에 저장됩니다.

그 중에서도 간단하게 가장 많이 사용하는 기법인 JWT를 알아보자

JWT

JWT는 Json 포맷을 이용하여 사용자에 대한 속정을 저장하는 Claim 기반의 Web Token으로
인증에 필요를 정보를 암호화/캡슐화하여 Token에 담아 사용되며, 서명된 토큰이라는 특징을 가지고 있다.

JWT의 구조는

  • Header
  • Payload
  • signature

로 구성되어 있다.

Header
토큰의 타입이나 서명생성에 어떤 알고리즘 로직이 사용되었는지를 저장
Payload
여기에는 Claim이라는 사용자에 대한 정보들을 저장하는데 key/value의 형태로 객체형태로 저장되며, 이 안에는 정보들이 담기게 된다.
iss: 토큰 발급자
suu: 토큰 제목
aud: 토큰 대상자
exp: 토큰 만료 시간
nbf: 토큰 활성 날짜
iat: 토큰 발급 시간
jti: JWT토큰 식별자
같은 내용들을 담고있다.
signature
위의 Payload에 중요한 정보들이 담긴다면 여기에는 그 정보들을 인증 할 수 있는
고유한 값이 들어가게 된다.

XSS

웹 상에서 가장 기초적인 취약점 공격 방법의 일종으로,
악의적인 사용자가 공격하려는 사이트에 스크립트를 넣는 기법을 말한다. 공격에 성공하면 사이트에 접속한 사용자는 삽입된 코드를 실행하게 되며 보통 의도치 않은 행동을 수행시키거나 쿠키나 세션 토큰 등의 민감한 정보를 탈취한다.

공격 방법에 따라 Stored XSS와 Reflected XSS로 나뉜다. Stored XSS는 사이트 게시판이나 댓글, 닉네임 등 스크립트가 서버에 저장되어 실행되는 방식이고, Reflected XSS는 보통 URL 파라미터(특히 GET 방식)에 스크립트를 넣어 서버에 저장하지 않고 그 즉시 스크립트를 만드는 방식이다. 후술된 내용 대부분은 Stored XSS라고 생각하면 된다. Reflected XSS의 경우 브라우저 자체에서 차단하는 경우가 많아 상대적으로 공격을 성공시키기 어렵다.

크로스 사이트 스크립팅이란 이름 답게, 자바스크립트를 사용하여 공격하는 경우가 많다. 공격 방법이 단순하고 가장 기초적이지만, 많은 웹사이트들이 XSS에 대한 방어 조치를 해두지 않아 공격을 받는 경우가 많다. 여러 사용자가 접근 가능한 게시판 등에 코드를 삽입하는 경우도 많으며, 경우에 따라서는 메일과 같은 매체를 통해서도 전파된다. 심지어는 닉네임에 코드를 심기도 한다.

CSRF

CSRF 공격(Cross Site Request Forgery)은 웹 어플리케이션 취약점 중 하나로 인터넷 사용자(희생자)가 자신의 의지와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록 등)를 특정 웹사이트에 요청하게 만드는 공격입니다.

profile
프론트엔드 주니어 개발자(React, Next.js)

0개의 댓글