Web

Web – CSRF와 XSS

  • 정의

사이트 간 요청 위조(또는 크로스 사이트 요청 위조영어: Cross-site request forgery, CSRFXSRF)는 웹사이트 취약점 공격의 하나로, 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록 등)를 특정 웹사이트에 요청하게 하는 공격을 말한다.

유명 경매 사이트인 옥션에서 발생한 개인정보 유출 사건에서 사용된 공격 방식 중 하나다.

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

CSRF 공격 방식
  • 보완책
    • Referer Check
      • 도메인 단위의 검증 – 백엔드에서 request의 referer를 확인하여 도메인의 일치를 체크하는 방법
        참고 : https://privacyinternational.org/guide-step/4150/http-referer-explanation
    • Security Token
      • CSRF token
        • 세션 단위의 검증
          – 임의의 난수를 값을 생성하여 세션으로 저장하고 사용자의 요청 부분마다 세션 값을 함께 넘김.
          그리고 백엔드에서 파라미터로 넘겨받은 세션 값과 실제 세션의 토큰 값을 일치하는지 체크하는 방법
      • Double Submit Cookie
        • 쿠키 단위의 검증 – CSRF token에 비해 비교적 편리한 방법. 요청시 스크립트 단에서 난수 값을 생성하여 쿠키에 저장하고 해당 난수 값을 넘김. 그리고 백엔드에서 파라미터로 넘겨받은 쿠키 값과 실제 쿠키의 토큰 값이 일치하는지 체크하는 방법.
          해당 방법은 Same Origin 정책에 의해 가능해진 기법


  • 정의

사이트 간 스크립팅(또는 크로스 사이트 스크립팅, 영문 명칭 cross-site scripting, 영문 약어 XSS)은 웹 애플리케이션에서 많이 나타나는 취약점의 하나로 웹사이트 관리자가 아닌 이가 웹 페이지에 악성 스크립트를 삽입할 수 있는 취약점이다. 주로 여러 사용자가 보게 되는 전자 게시판에 악성 스크립트가 담긴 글을 올리는 형태로 이루어진다. 이 취약점은 웹 애플리케이션이 사용자로부터 입력 받은 값을 제대로 검사하지 않고 사용할 경우 나타난다. 이 취약점으로 해커가 사용자의 정보(쿠키세션 등)를 탈취하거나, 자동으로 비정상적인 기능을 수행하게 할 수 있다. 주로 다른 웹사이트와 정보를 교환하는 식으로 작동하므로 사이트 간 스크립팅이라고 한다.

  • 보완책
    • 입력 값을 제한
      • 원하지 않는 값 입력 방지를 위해 유효성 검사를 추가합니다..
    • 입력 값을 치환
      • 스크립트 언어의 명령 동작 방지를 위해 <,>,|,&,= 등의 특수문자를 메타데이터로 변환합니다.
    • 관련 라이브러리 사용
      • 해당 공격법은 날로 진화하기때문에 취약점 해결을 위한 라이브러리 사용을 권장합니다
        다만, 적용한 라이브러리의 업데이트가 느리다면 해당 라이브러리는 위험하니 관찰 또한 필요합니다.
XSS 공격방식
  • CSRF 와 XSS 차이점
    • CSRF – SERVER 대상의 공격
    • XSS – Client 대상의 공격

댓글 3개

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.