인증/보안2

이승현·2022년 11월 13일

웹 개발

목록 보기
17/20

Security

개발자들이 웹사이트, 모바일 어플, 웹 API등을 만들 때에 해커들의 공격을 막기 위해서 보안(security)은 필수 사항

공격 예시

  • SQL injection
  • XSS
  • CSRF

CSRF(Cross Site Request Forgery)

다른 오리진 에서 유저가 보내는 요청을 조작하는 것

  • 해커가 직접 데이터에 접근할 수 없다.

CSRF 공격조건

  • 쿠키를 사용한 로그인
    • 유저가 로그인 했을 때 쿠키로 어떤 유저인지 알아야 함
  • 예측할 수 있는 요청/parameter를 가져야 함
    • request에 해커가 모르는 정보가 있으면 안 됨

CSRF 방어법

  • CSRF 토큰 사용
    • 서버측에서 CSFR공격에 보호하기 위한 문자열을 유저의 브라우저와 웹 앱에만 제공
  • Same-site cookie 사용
    • 같은 도메인 세션/쿠키를 사용할 수 있다.(다른 도메인에서 온 쿠키는 안받음)

Token

  • 클라이언트는 XSS, CSRF공격에 노출될 위험이 있어 민감한 정보를 담으면 안된다.
  • 토큰은 유저 정보를 암호화한 상태로 담을 수 있고 암호화했기 때문에 클라이언트에 저장해도 된다.

Access Token, Refresh Token

우리 과제에서는 Access Token을 body에 주고

Refresh Token 쿠키에 넣어서 보내준다.

JWT(Json Web Token)

JSON 포맷으로 사용자에 대한 속성을 저장하는 웹 토큰

토큰 기반 인증 장점

  • Statelessness & Scalability(무상태성 & 확장성)
    • 서버는 클라이언트에 대한 정보를 저장할 필요 x
    • 토큰을 헤더에 추가함으로 인증절차 완료
  • 안정성
    • 암호화 한 토큰을 사용
    • 암호화 키를 노출 할 필요 x
  • 어디서나 생성 가능
    • 토큰을 생성하는 서버가 꼭 토큰을 만들지 않아도 됨
  • 권한 부여에 용이
    • 토큰을 payload(내용물) 안에 어떤 정보에 접근 가능한지 정의
    • Ex) 사진과 연락처 사용권한 부여 / 사진 권한만 부여 / 연락처 권한만 부여

OAuth

보안된 리소스에 액세스 하기 위해 클라이언트에 권한을 제공(Authorization)하는 프로세스를 단순화하는 프로토콜 중 한 방법이다.

ex) 소셜로그인

OAuth 용어

  • Resource Owner : 액세스 중인 리소스의 유저
  • Client : Resource Owner를 대신하여 보호된 리소스에 액세스하는 프로그램
  • Resource Server : client의 요청을 수락하고 응답할 수 있는 서버
  • Authorization server : Resource Server가 액세스 토큰을 발급받는 서버
  • Authorization grant : 클라이언트가 액세스 토큰을 얻을 때 사용하는 자격 증명
  • Authorization code : access token을 발급받기 전에 필요한 code
  • Access token : 보호된 리소스에 액세스하는 데 사용되는 credentials
  • Scope : 주어진 액세스 토큰을 사용하여 액세스할 수 있는 리소스의 범위

Grant type

  • Client가 액세스 토큰을 얻는 방법

Grant type 종류

  • Authorization Code Grant Type
    • 액세스 토큰을 받아오기 위해서 먼저 Authorization Code 를 받아 액세스 토큰과 교환하는 방법
    • client-secret을 공유하지 않도록 하여 보안성을 강화
  • Refresh Token Grant Type
    • 일정 기간 유효기간이 지나서 만료된 액세스 토큰을 편하게 다시 받아오기 위해 사용하는 방법
profile
매일 꾸준히

0개의 댓글