CSRF(Cross Site Request Forgery)

  • 웹 애플리케이션 취약점 중 하나
  • 인터넷 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위(modify, delete, register) 등 특정한 웹사이트에 request 하도록 만드는 공격 기법
  • ex. SNS의 광고성 글
  • 자동 로그인으로 이런 피싱 사이트에 접속하게 되면서 피해를 입는 경우가 많다.

대응 기법

  • 리퍼러(Refferer) 검증
    • 백엔드 단에서 Refferer 검증을 통해 승인된 도메인으로 요청시에만 처리하도록 한다.
    • request header 안에 있는 데이터를 가져와서 referer 값 확인
String referer = request.getHeader("Referer");
  • Security Token 사용
    • 사용자의 세션에 임의의 난수 값을 저장하고, 사용자의 요청시 해당 값을 포함하여 전송시킨다.
    • 백엔드 단에서는 요청을 받을 때 세션에 저장된 토큰 값과 요청 파라미터로 전달받는 토큰 값이 일치하는지 검증 과정을 거치는 방법

 

XSS(Cross Site Scription)

  • 웹 애플리케이션 취약점 중 하나
  • 관리자가 아닌 권한이 없는 사용자가 웹 사이트에 스크립트를 삽입하는 공격 기법
  • 악의적으로 스크립트를 삽입해서 이를 열람한 사용자의 쿠키가 해커에게 전송시키며, 쿠키를 통해 세션 하이재킹 공격을 한다.
  • 해커는 세션 ID를 가진 쿠키로 사용자의 계정에 로그인

대응 기법

  • 입출력 값 검증 : XSS 필터링 적용 후 스크립트 실행되는지 테스트
  • XSS 방어 라이브러리, 확장앱 : 서버단에서 방어 라이브러리 추가 또는 사용자들이 확장앱 설치
  • 웹 방화벽 : 다양한 injection 방어 가능
  • CORS, SOP 설정 
    • CORS(Cross-Origin Resource Sharing), SOP(Same-Origin-Policy)를 통해 리소스의 Source를 제한하는 것
    • 사전에 지정된 도메인이나 범위가 아니면, 리소스를 가져올 수 없게 제한한다.

+ Recent posts