- Published on
XSS와 CSRF에 대한 이해와 예방
- Authors
- Name
- Inhwan Cho
웹 애플리케이션 개발 시 보안은 매우 중요한 고려사항입니다.
특히, XSS(크로스 사이트 스크립팅)와 CSRF(크로스 사이트 요청 위조)는 웹 애플리케이션에서 흔히 발견되는 보안 위협 중 두 가지입니다.
이 글에서는 XSS
와 CSRF
의 정의와 각각의 공격 예시, 그리고 이를 방지하기 위한 대책에 대해 자세히 살펴보겠습니다.
XSS (Cross-Site Scripting)
XSS 공격은 공격자가 사용자의 웹 브라우저에 악성 스크립트를 주입하여 실행되게 만드는 공격 방법입니다.
이로 인해 사용자의 세션 토큰, 쿠키 등 민감한 정보가 도난당하거나, 사용자를 대신해서 불법적인 행동을 하게 됩니다.
구분 | 설명 |
---|---|
정의 | 공격자가 웹 페이지에 악성 스크립트를 삽입하고, 다른 사용자가 그 페이지를 조회할 때 스크립트가 실행되게 만드는 보안 취약점입니다. |
유형 | 1. Stored XSS: 악성 스크립트가 웹 애플리케이션 서버에 저장되어 실행되는 형태 2. Reflected XSS: 사용자의 요청에 바로 스크립트가 반사되어 실행되는 형태 3. DOM-based XSS: 클라이언트 사이드에서 DOM을 조작하여 실행되는 스크립트 |
예방 방법 | 1. 사용자 입력값에 대한 적절한 검증 및 이스케이프 처리 2. 콘텐츠 보안 정책(CSP) 사용 3. 입력값을 HTML로 렌더링할 때 안전한 라이브러리 사용 |
CSRF(Cross Site Request Forgery)
CSRF 공격은 공격자가 사용자가 이미 인증된 웹사이트에 사용자를 속여 요청을 보내게 하여, 사용자명의로 원하지 않는 명령이나 변경을 실행하게 만드는 기법입니다.
방지 방법
- 요청에 CSRF 토큰을 포함시킵니다. 서버는 요청을 처리하기 전에 이 토큰을 검증합니다.
- 쿠키에 SameSite 속성을 설정하여, 다른 사이트의 요청으로부터 쿠키를 보호합니다.
- 민감한 작업을 수행하는 요청에는 CAPTCHA 또는 이중 인증을 요구합니다.
비교
공격 유형 | 정의 | 공격 방법 | 주요 방지 방법 |
---|---|---|---|
XSS | 사용자의 웹 브라우저에 악성 스크립트를 주입하여 실행 | 사용자 입력을 검증 없이 웹 페이지에 출력 | 데이터 이스케이핑, 안전한 API 사용, CSP 설정 |
CSRF | 사용자 명의로 원하지 않는 웹사이트 요청을 보내게 함 | 사용자가 인증된 세션이 있는 사이트에 속임수를 사용하여 요청 전송 | CSRF 토큰 사용, 쿠키의 SameSite 속성 설정, 이중 인증 요구 |
보안은 웹 개발의 매우 중요한 부분이며, XSS와 CSRF와 같은 공격으로부터 애플리케이션을 보호하기 위한 조치를 취하는 것이 필수적입니다. 개발자는 이러한 보안 위협을 항상 염두에 두고, 신중하게 코드를 작성할 필요가 있습니다.