XSS(Cross-site Scripting) vs CSRF(Cross-Site Request Forgery)
XSS와 CSRF는 웹 보안 취약점 중 가장 일반적인 두 가지 유형입니다. 두 방법 모두 악성 사용자가 무분별한 행동을 할 수 있게 하지만, 그들이 어떻게 작동하고 어떻게 방어해야 하는지에는 차이가 있습니다.
Cross-Site Scripting (XSS)
Cross-Site Scripting은 악성 스크립트를 신뢰할 수 있는 웹 사이트에 삽입하는 공격 방식입니다. XSS 공격이 성공하면, 공격자는 사용자의 세션 토큰을 훔칠 수 있고, 사용자 인터페이스를 조작하거나, 사용자의 개인정보를 수집할 수 있습니다.
XSS는 크게 세 가지 유형으로 분류됩니다:
Stored XSS: 공격자가 웹사이트에 악성 스크립트를 영구적으로 저장하게 하는 공격. 예를 들어, 사용자가 남긴 댓글에 악성 스크립트가 포함되어 있다면 이를 보는 모든 사용자는 공격을 받게 됩니다.
Reflected XSS: 사용자에게 악성 URL을 클릭하게 만들어서 발생하는 공격. URL은 웹 사이트에 즉시 실행되는 악성 스크립트를 포함하고 있습니다.
DOM-based XSS: Document Object Model에 기반하여 발생하는 공격. 악성 스크립트가 웹페이지의 DOM을 조작하여 악의적인 행동을 유발합니다.
Cross-Site Request Forgery (CSRF)
Cross-Site Request Forgery은 공격자가 사용자의 웹 브라우저를 조작하여, 사용자가 로그인하고 있는 다른 웹 사이트에서 무의식적으로 악의적인 요청을 수행하게 만드는 공격입니다.
CSRF는 다음과 같은 순서로 이루어집니다:
1. 사용자가 믿을 수 있는 사이트에 로그인합니다.
2. 사용자가 악의적인 사이트를 방문합니다.
3. 악의적인 사이트는 사용자의 웹 브라우저를 통해 믿을 수 있는 사이트에 대한 악의적인 요청을 보냅니다.
4. 믿을 수 있는 사이트는 악의적인 요청을 신뢰할 수 있는 사용자로부터 받았다고 생각하고 수행합니다.
XSS vs CSRF
XSS와 CSRF 모두 웹 사이트의 보안을 해치는 공격 방법이지만, 그들의 차이점을 이해하는 것이 중요합니다.
작동 방식: XSS는 악성 스크립트를 신뢰할 수 있는 웹 사이트에 삽입하는 공격입니다. 반면에, CSRF는 사용자가 로그인하고 있는 사이트에서 악의적인 요청을 무의식적으로 수행하게 만드는 공격입니다.
목적: XSS의 주요 목표는 사용자의 데이터를 훔치는 것입니다. 반면에, CSRF의 목표는 사용자가 무의식적으로 악의적인 요청을 수행하게 만드는 것입니다.
방어 방법: XSS를 방어하기 위해서는 사용자의 입력을 적절하게 검증하고 이스케이프 처리하는 것이 중요합니다. 또한 Content Security Policy를 사용하여 스크립트의 실행을 제한할 수 있습니다. 반면에 CSRF를 방어하기 위해서는 요청에 대한 토큰을 사용하여 사용자의 요청을 검증하거나 SameSite 쿠키 속성을 사용하는 것이 효과적입니다.
결론
웹 보안은 복잡하며, XSS와 CSRF는 그 중 일부일 뿐입니다. 이 두 공격 모두 웹 애플리케이션의 취약점을 이용하며, 개발자가 이들을 이해하고 적절히 방어하는 것이 중요합니다.
'web' 카테고리의 다른 글
| web - WebRTC란 무엇인가? (0) | 2023.06.13 |
|---|---|
| web - HTTPS의 동작 방식 (0) | 2023.05.04 |
| web - 웹소켓 통신을 활용하여 채팅서비스 구현하기 (0) | 2023.05.03 |
| web - Access Token과 Refresh Token (0) | 2023.05.02 |
| web - CDN(콘텐츠 전송 네트워크) (0) | 2023.05.02 |