token, XSS, CSRF

Yeeeeeun_IT·2022년 8월 26일
0

JWT

“로그인 정보를 굳이 서버나 DB에 저장해야 할까?”
JWT 토큰은 유저 정보를 담은 객체를 문자열로 만들어 암호화한 후 암호화된 키(accessToken)를 브라우저에 보낸다.
받아온 암호화된 키는 브라우저 저장소에 저장해두었다가 유저의 정보가 필요한 API를 사용할 때 보내주게 되면 해당 키를 백엔드에서 복호화해서 사용자를 식별한 후 접근이 가능하도록 한다.

JWT 토큰에는 해당 토큰이 발급 받아온 서버에서 정상적으로 발급을 받았다는 증명을 하는 signature를 가지고 있다. 따라서 사용자의 정보를 DB를 열어보지 않고도 식별할 수 있게 되었다.

JWT 토큰은 암호화는 했지만 누구든 복호화가 가능하기 때문에 따라서 중요한 데이터는 JWT 토큰에 저장해서는 안된다. 보안을 위해 토큰의 만료시간을 짧게 준다.

XSS

크로스 사이트 스크립트 (XSS)

dangerouslySetInnerHTML을 이용하면 웹에디터에 입력한 html 태그가 적용된 형태로 내용을 받아올 수 있다.

스크립트를 활용한 토큰 탈취처럼, 다른 사이트의 취약점을 노려서 javascript 와 HTML로 악의적 코드를 웹 브라우저에 심고 사용자 접속 시 그 악성 코드가 실행되도록 하는 것을 크로스 사이트 스크립트 (Cross Site Script / XSS) 라고 한다.

이러한 공격 코드가 들어있으면 자동으로 차단해주는 라이브러리를 이용할 수 있다.

https://www.npmjs.com/package/dompurify
yarn add dompurify
yarn add -D @types/dompurify

CSRF

Cross Site Request Forgery

사이트 간 요청 위조는 웹사이트 취약점 공격의 하나로, 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록 등)를 특정 웹사이트에 요청하게 하는 공격을 말한다.
사이트 간 스크립팅(XSS)을 이용한 공격이 사용자가 특정 웹사이트를 신용하는 점을 노린 것이라면, 사이트간 요청 위조는 특정 웹사이트가 사용자의 웹 브라우저를 신용하는 상태를 노린 것이다. 일단 사용자가 웹사이트에 로그인한 상태에서 사이트간 요청 위조 공격 코드가 삽입된 페이지를 열면, 공격 대상이 되는 웹사이트는 위조된 공격 명령이 믿을 수 있는 사용자로부터 발송된 것으로 판단하게 되어 공격에 노출된다.(위키백과)

profile
🍎 The journey is the reward.

0개의 댓글