크로스 사이트 요청 위조 (CSRF)
Cross-Site Request Forgery (CSRF)
설명
웹 애플리케이션이 사용자가 제공한 요청이 의도적으로 제출되었는지 충분히 검증하지 못하는 취약점입니다.
잠재적 영향
권한 상승 또는 신분 가정 (권한 남용): 공격자가 피해자의 권한으로 애플리케이션에서 작업을 수행할 수 있습니다.
보호 메커니즘 우회: 공격자가 웹 애플리케이션의 보호 메커니즘을 우회할 수 있습니다.
애플리케이션 데이터 읽기 (정보 유출): 공격자가 애플리케이션 데이터를 무단으로 읽을 수 있습니다.
애플리케이션 데이터 수정 (데이터 훼손): 공격자가 애플리케이션 데이터를 임의로 수정할 수 있습니다.
서비스 거부: 충돌, 종료, 또는 재시작 (서비스 중단): 공격자가 애플리케이션의 서비스 거부 상태를 유발할 수 있습니다.
해결 방법
CSRF 토큰(Session의 고유 값 사용)을 추가하여 요청이 유효한지 검증하세요.
SameSite 쿠키 속성을 설정하여 CSRF 공격을 방지하십시오.
Cross-Origin Resource Sharing의 처리를 검토하여 적절한 CORS 정책이 구성되었는지 확인하세요.
사용자 동의를 기반으로 중요한 작업에 대해 추가 인증 단계를 추가하세요.
취약한 코드 및 안전한 코드 예시
취약한 코드
안전한 코드
설명:
취약한 코드: 위 코드에서는 클라이언트가 전송한 요청을 검증하지 않으며, 이는 CSRF 공격의 위험성을 증가시킵니다.
안전한 코드: CSRF 토큰을 추가하여 세션에서 유지되는 고유한 값을 검증하고, 잘못된 요청이나 비정상적인 접근 시 이를 방지합니다.
관련 CVE
참조
Last updated