XSS와 CSRF 공격

enjoy89·2024년 5월 13일
0
post-custom-banner

웹 사이트 보안 이슈로 자주 언급되는 XSS와 CSRF 공격과 이를 방지하는 방법에 대해 알아보겠습니다.

XSS (Cross-Site Scripting) 공격

공격자가 웹 애플리케이션에 악성 스크립트나 HTML 코드를 주입하여 악의적인 요청을 보내는 것

공격의 목적

사용자의 쿠키 정보, 세션 ID 등과 같은 중요한 정보를 탈취하거나, 사용자를 대신하여 악의적인 행동을 하도록 만들 수 있습니다.

예를 들어, 공격자가 <script>alert('XSS test');</script>와 같은 HTML alert 코드를 작성하여, 이 글을 읽는 모든 사용자의 브라우저에서 악의적인 스크립트가 실행되어, 아래와 같이 경고 창이 표시될 수 있습니다.

아래 출처 링크에 들어가시면 XSS공격에 대해 보다 더 자세한 설명을 확인하실 수 있습니다.

출처: https://kevinthegrey.tistory.com/36

XSS 공격 예방법

1. 쿠키에 HttpOnly 및 Secure 플래그 설정

쿠키에 HttpOnly 플래그를 설정하면 JavaScript를 통한 쿠키 접근을 차단할 수 있으며, Secure 플래그를 설정하면 HTTPS를 통해서만 쿠키가 전송됩니다.

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

CSP를 사용하여, 웹 페이지에서 실행될 수 있는 스크립트의 출처를 제한합니다. CSP는 XSS 공격을 방지하는 강력한 수단으로, 웹 서버가 특정 외부 자원만을 실행하도록 브라우저에 지시합니다.



CSRF (Cross-Site Request Forgery) 공격

공격자가 사용자의 인증 정보를 이용하여, 사용자의 의지와 무관하게 악의적인 요청을 보내는 것

공격의 목적

공격자는 사용자가 이미 인증된 세션 정보를 이용하여, 사용자의 웹 애플리케이션에 대해 변경을 요구하는 악의적인 요청을 전송하게 만드는 공격입니다.

예를 들어, 공격자는 사용자가 로그인한 상태에서 은행의 송금 서비스를 이용하도록 만들어, 사용자 몰래 자금을 이체하게 만들 수 있습니다.

CSRF 공격 예방법

1. SameSite 쿠키 속성 사용

쿠키에 SameSite 속성을 설정하면 브라우저가 같은 사이트에서만 쿠키를 전송하도록 제한할 수 있습니다.

2. 사용자 인증에 대한 추가 검증 수행

중요한 작업(예: 비밀번호 변경, 계정 정보 수정)을 수행할 때, 추가적인 사용자 인증(예: 비밀번호 재입력, 이메일 확인, OTP)을 요구합니다.

profile
Backend Developer 💻 😺
post-custom-banner

0개의 댓글