공부 및 일상기록

[네트워크] XSS와 CSRF 본문

개발/네트워크

[네트워크] XSS와 CSRF

낚시하고싶어요 2023. 1. 18. 12:05

XSS (Cross Site Scripting)

공격자가 상대방의 브라우저에서 스크립트가 실행되도록 만드는 방식이다.

사용자의 세션 가로채기, 웹사이트 변조, 악의적 콘텐츠를 삽입하거나 피싱 공격을 진행하는것이다.

주로 스크립트 코드를 삽입해서 입력이 되면 위와 같은 공격이 진행된다.

 

XSS공격대상

웹사이트 관리자가 아닌 사람이 웹사이트에 악성 스크립트를 삽입할 수 있는 취약점으로 발생될 수 있는 공격이다.

  • 웹 애플리케이션이 사용자로부터 입력받은 값을 제대로 검사하지 않고 사용할 경우 나타난다.
    • 주로 여러 사용자가 보게되는 전자 게시판에 악성 스크립트가 담긴 글을 올리는 형태로 이뤄진다.
  • 이 취약점으로 해커가 사용자의 정보(쿠키나 세션)를 탈취하거나, 자동으로 비정상적인 기능을 수행하게 하거나 할 수 있다. 
    • 주로 다른 웹사이트와 정보를 교환하는 식으로 작동한다.

XSS대응방안

1. 필터제작

  • XSS공격은 입력값에 대한 검증이 제대로 이뤄지지 않아 발생하는 취약점이다. 따라서 모든 입력값에 필터링을 해야한다.
  • script문장에 존재하는 특수문자를 메타캐릭터로 변환시킨다.

2. BB Code 사용

  • 따로 필터를 만들기 어려운 경우 사용할 수 있다.

3. 쿠키의 보안 옵션 사용

  • 쿠키 생성시 보안쿠키 라는 파라미터를 지정하면 TLS상에서만 사용할 수 있다.

4. 콘텐츠 보안 정책(CSP) 사용

  • 스크립트 실행에 대한 정책을 설정해 예방하는 방법이다.
  • 출처가 자기 서버인 스크립트만 실행될 수 있도록 한다.

 

 

CSRF(Cross-site Request Forgery)

사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록 등)를 특정 웹사이트에 요청하게 하는 공격을 말한다.

일단 사용자가 웹사이트에 로그인한 상태에서 사이트간 요청 위조 공격 코드가 삽입된 페이지를 열면, 공격 대상이 되는 웹사이트는 위조된 공격 명령이 믿을 수 있는 사용자로부터 발송된 것으로 판단하게 되어 공격에 노출된다.

 

대응 방안

1. CSRF 토큰 사용

  • 서버에 들어온 요청이 실제 서버에서 허용한 요청이 맞는지 확인하기 위한 토큰

2. 재인증 요구

 

 

요약

XSS는 사용자가 특정 웹사이트를 신용하는 점을 노려 공격자가 사용자를 공격하는 것이고

CSRF는 특정 웹사이트가 사용자의 웹브라우저를 신용하는 상태를 노려 공격자가 서버를 공격하는 것이다.

 

XSS는 사이트 변조나 백도어를 통해 클라이언트에 대한 악성 공격을 한다.
CSRF는 요청을 위조하여 사용자의 권한을 이용해 서버에 대한 악성 공격을 한다.