Browser Security

김동현·2021년 7월 16일
0

Interation With Server

목록 보기
5/7


브라우저는 항상 보안위협을 받고 있으며, 브라우저가 위협받는 근본적인 이유는 자바스크립트를 구동하기 때문!

ㄴ자바스크립트로 할 수 있는 것들이 많아서

브라우저에서 자바스크립트로 할 수 있는 것들

  1. ajax call을 해서 api를 호출할 수 있다.
  2. 다이나믹하게 DOM을 제어할 수 있다.
  3. 인증 정보를 브라우저에 저장할 수 있다.
  4. 인증 정보를 불러 올 수도 있다.

어떤 공격이 일어날 수 있을까??

XSS

클라이언트가 서버를 신뢰하기 때문에 발생하는 이슈

웹 애플리케이션에서 일어나는 취약점으로 관리자가 아닌 권한이 없는 사용자가 웹 사이트에 스크립트를 삽입하는 공격 기법이다.

왼쪽의 사진은 XSS공격중 Persistent(or Stored)XSS Attack이고, 사용자의 세션을 탈취하는 프로세스를 나타내고 있다.

해거카 XSS 공격에 취약한 웹사이트에 악의적인 스크립트를 삽입하고, 그 스크립트가 있는 게시글을 열람한 사용자는 악성스크립트로 인해 본인의 쿠키가 해커에게 전송되게 된다.

세션 ID가 포함된 쿠키를 탈취한 해커는 탈취한 사용자의 계정으로 로그인하게 된다.

XSS 공격예방

  1. 입출력 값 검증

    사용자가 입력한 값에 대한 검증과 사용자가 입력한 값을 그대로 출력할 때 검증이 필요하다.

    XSS Cheat Sheet에 대한 필터 목록을 만들어 모든 Cheat Sheet에 대한 대응이 가능하도록 해야한다.

    XSS에 대한 필터링을 적용한 뒤 직접 테스트하여 스크립트가 실행되는지 모의해킹 해보는 것도 좋은 방법

  2. XSS 방어 라이브러리, 브라우저 확장앱 사용

    XSS를 막아주는 Anti XSS 라이브러리를 여러 회사에서 제공하는데 이 라이브러리를 사용하면 손쉽게 XSS를 방어할 수 있다.

    XSS 라이브러리를 사용하는 것은 서버 단에서 개발자가 추가하는 것이고, 사용자들이 각자 본인의 브라우저에서 악의적인 스크립트가 실행되지 않도록 방어하는 것이 중요하다.

    방문하는 모든 사이트가 안전하다는 보장이 없기 때문에 브라우저 확장 앱 중 Anti XSS를 해주는 애플리케이션을 설치하고 방어해야한다.

  3. 웹 방화벽 사용

    웹 방화벽은 웹 공격에 특화되어있기 때문에 XSS 공격을 방어하기 위함만이 아니라 각종 Injection 공격을 효과적으로 방어할 수 있다.

CSRF

반대로 서버가 클라이언트를 신뢰해서 발생하는 이슈

서버는 인증정보를 가지고 오면 믿는다.

사용자는 인증 정보를 가진 채로 해커의 링크를 누르면, 해커는 인증정보를 가로채서 서버에 요청을 보내버린다.

공격자가 '사용자의 동의없이 / 사용자가 인지하지 못하는 상황에서' 브라우저로 하여금 서버에 어떤 요청을 보내도록한다. XSS 공격으로 탈취한 정보를 이 때 사용할 수 있다.

CSRF 공격예방

  1. Referrer 검증

    Referrer 검증은 Backend에서 request의 referrer를 확인하여 도메인이 일치하는지 검증하는 방법이다.

    일반적으로 referre 검증만으로 대부분의 CSRF 공격을 방어할 수 있다.

  2. Security Token 사용

    사용자의 세션에 임의의 난수값을 저장하고 사용자의 요청마다 해당 난수값을 포함시켜 전송시킨다.

    Backend에서 요청을 받을때마다 세션에 저장된 토큰값고 요청 파라미터에 전달되는 토큰값이 일치하는지 검증하는 방법이다.

profile
개발자로서의 첫걸음

0개의 댓글

관련 채용 정보