정보를 담고있는 데이터이다.
토큰은 대표적으로 refreshToken이나 accessToken이 있다.
토큰은 암호화된 정보를 가지고 인증이나 인가를 처리하는 역할을 담당한다.
대표적으로 JWT(JSON WEB TOKEN)이 존재한다.
JWT는 그냥 JSON 형식으로 만들어진 TOKEN일 뿐이다.
JWT 토큰 구성 = Header + Payload + Signature
사용자가 로그인 정보 입력
서버에 로그인 정보를 보냄
서버는 로그인 정보를 받아서 사용자의 고유 ID 값을 설정하고 Payload에 기타 정보를 넣고 JWT토큰의 유효기간을 설정하고 Secret Key로 암호화하고 토큰을 발급
클라이언트는 서버에 요청할 때 Authorization header나 URL에 JWT토큰을 담아서 전달
서버는 JWT Signature을 Secret Key로 복호화해서 사용자 정보와 유효기간을 확인
Payload에서 사용자의 정보에 맞는 데이터를 가져온다.
크로스 사이트 스크립팁으로 상대방의 브라우저에 자바스크립트를 실행하도록 하여 정보를 빼오거나 악의적인 정보를 심는 방법
이미지 태그에 심거나 에디터와 같은 곳에 심기도 한다.
웹 개발자라면 HttpOnly와 같은 속성으로 기본적으로 쿠키는 막아놓아야 한다.
보안과 관련된 문제들을 참고하려면 "OWASP Top10" 를 검색해서 어떤 보안이 중요한지를 찾아보아야 한다.
클라이언트가 어떤 이미지나 버튼등을 클릭하였을 때 특정 코드를 실행하게 해서 다른 서버에 요청을 보내게 하는 방법이다.
예를 들자면 페이스북에 자동 로그인되어있는 철수가 악의적인 사이트에 있는 이미지를 클릭하였을 때 자동으로 페이스북에 광고성 게시글을 올리는 요청을 보내는 것입니다. 본인이 원하지 않았지만 글을 작성하게끔 유도하는 방법입니다.
일반적으로는 요청을 보낼 때 같은 도메인일 경우에만 허용하게 하여서 csrf를 방어를 대부분 할 수 있습니다.