[웹 보안 / 인증] 정리

young·2022년 7월 18일
0

6/23~7/20 Section 3 TIL

목록 보기
19/21

HTTPS

  • 인증서를 기반으로 데이터 제공자의 신원을 보장받을 수 있다.
  • 기존 HTTP 방식보다 더 안전한 통신 프로토콜이다.
  • 요청 및 응답 데이터를 암호화하여 전송하기 때문에 정확한 키로 복호화하기 전까지 어떤 내용인지 알 수 없다.
  • 중간에 인터넷 요청이 탈취되더라도 그 내용을 알아볼 수 없으므로 중간자 공격에 취약하지 않다.
  • maxAge 또는 expires 옵션이 설정되는 쿠키의 경우 설정된 시간이 지난 이후 자동으로 제거한다. => 영속성 쿠키
    지정하지 않은 경우 => 세션 쿠키 => 클라이언트가 종료되면 세션이 종료되고 세션 쿠키가 제거 됨 => 세션 복원 기능으로 복원 가능

  • httpOnly: true => 자바스크립트에서 쿠키에 접근 불가
    httpOnly: false => 기본값. 자바스크립트에서 쿠키 접근 가능

  • sameSite: none => 모든 요청에 대해 쿠키를 주고받을 수 있다.
    secure: true 옵션과 함께 사용할 것

  • 요청하는 서버의 도메인, 경로, sameSite 등의 조건이 맞을 경우 같이 전송된다.

Session

  • 서버에 접속 상태가 저장된다.
  • 보통 하나의 서버에서만 접속 상태를 저장한다.
    => 여러 개의 서버에서 같은 세션 데이터에 접근하는 것은 공통 session store 등 사용해야 하므로 유리하지 않음
  • 신뢰할 수 있는 유저인지 확인이 가능하다.
  • cookie에 세션 아이디가 저장된다.

SQL Injection

데이터베이스에서 임의의 SQL문을 실행할 수 있도록 명령어를 삽입하는 공격 유형
입력값 검증: 화이트리스트 방식으로 해당 키워드가 들어오면 다른 값으로 치환하여 공격에 대응한다.
에러가 발생한 SQL문과 에러 내용이 클라이언트에 노출되지 않도록 별도의 에러 핸들링이 필요하다.

XSS

Cross-site scripting = 사이트 간 스크립팅
공격자가 웹 사이트에 악의적인 스크립트를 심어놓는 공격 유형
주로 클릭을 유도하는 글을 작성하여 글을 클릭하면 악의적인 스크립트가 실행되어 웹 사이트 이용자에게 피해를 준다.
XSS로 탈취한 사용자의 민감한 정보를 이용해 권한을 획득한 후 이를 이용해 CSRF 등 다양한 공격에 활용한다.

CSRF

Cross-site request forgery
다른 사이트에서 유저가 보내는 요청을 조작하는 공격 유형
공격자가 응답에 직접 접근할 수 없다.
쿠키를 사용한 로그인이여야 CSRF 공격이 가능하다.
공격자는 서버를 공격하기 위한 요청에 대해 미리 파악하고 있어야 한다. 예측할 수 없는 파라미터가 있으면 어렵다.

Clickjacking

=사용자 인터페이스 덧씌우기 (User Interface Redress)
사용자가 의도한 클릭 대상이 아닌 다른 대상을 클릭하도록 속이는 공격 유형
공격자는 눈에 보이는 화면 위에 눈에 보이지 않는 다른 행동을 실행하는 화면을 배치한다.
공격자는 이를 통해 민감한 개인 정보를 탈취하거나 컴퓨터의 제어권을 획득할 수 있다.


Token

토큰 기반 인증은 사용자가 토큰을 저장하므로 서버의 부담을 덜 수 있다.
여러 개의 서버를 사용하는 서비스를 운영하고, 앱의 확장을 고려할 때 토큰 기반 인증이 유리할 수 있다.

클라이언트에서 POST /login 로그인 요청
=> 서버에서 DB와 유저 정보 대조
=> 확인됐을 경우 Access token 생성, 응답과 함께 전달

클라이언트에서 GET /userinfo 정보 요청
Headers: { Authorization: “Bearer JWT_TOKEN” }
=>Access token 검증 됐을 경우 원하는 요청에 대한 응답 전송

OAuth

전통적으로 직접 작성한 서버에서 인증을 처리해주는 것과 달리, 인증을 중개해주는 매커니즘이다.
OAuth는 인증만 다른 서비스에 맡기고, 접근 권한 관리는 내 서버의 몫이다.
Authorization Code는 Authorization Grant의 한 타입으로, 액세스 토큰을 발급받기 위한 code를 의미한다.
Authorization server는 Resource server가 액세스 토큰을 발급받는 인증 서버다.

profile
즐겁게 공부하고 꾸준히 기록하는 나의 프론트엔드 공부일지

0개의 댓글