웹 사이트 보안 이슈로 자주 언급되는 XSS와 CSRF 공격과 이를 방지하는 방법에 대해 알아보겠습니다.
공격자가 웹 애플리케이션에 악성 스크립트나 HTML 코드를 주입하여 악의적인 요청을 보내는 것
사용자의 쿠키 정보, 세션 ID 등과 같은 중요한 정보를 탈취하거나, 사용자를 대신하여 악의적인 행동을 하도록 만들 수 있습니다.
예를 들어, 공격자가 <script>alert('XSS test');</script>
와 같은 HTML alert 코드를 작성하여, 이 글을 읽는 모든 사용자의 브라우저에서 악의적인 스크립트가 실행되어, 아래와 같이 경고 창이 표시될 수 있습니다.
아래 출처 링크에 들어가시면 XSS공격에 대해 보다 더 자세한 설명을 확인하실 수 있습니다.
출처: https://kevinthegrey.tistory.com/36
쿠키에 HttpOnly
플래그를 설정하면 JavaScript를 통한 쿠키 접근을 차단할 수 있으며, Secure
플래그를 설정하면 HTTPS를 통해서만 쿠키가 전송됩니다.
CSP를 사용하여, 웹 페이지에서 실행될 수 있는 스크립트의 출처를 제한합니다. CSP는 XSS 공격을 방지하는 강력한 수단으로, 웹 서버가 특정 외부 자원만을 실행하도록 브라우저에 지시합니다.
공격자가 사용자의 인증 정보를 이용하여, 사용자의 의지와 무관하게 악의적인 요청을 보내는 것
공격자는 사용자가 이미 인증된 세션 정보를 이용하여, 사용자의 웹 애플리케이션에 대해 변경을 요구하는 악의적인 요청을 전송하게 만드는 공격입니다.
예를 들어, 공격자는 사용자가 로그인한 상태에서 은행의 송금 서비스를 이용하도록 만들어, 사용자 몰래 자금을 이체하게 만들 수 있습니다.
쿠키에 SameSite 속성을 설정하면 브라우저가 같은 사이트에서만 쿠키를 전송하도록 제한할 수 있습니다.
중요한 작업(예: 비밀번호 변경, 계정 정보 수정)을 수행할 때, 추가적인 사용자 인증(예: 비밀번호 재입력, 이메일 확인, OTP)을 요구합니다.