잘 알려진 웹 취약점으로 XSS와 CSRF가 있는데, 이 둘이 헷갈리는 경우가 많아서 작성해 보았습니다.
1. XSS (Cross-Site Scripting)
- Cross-Site: 서로 다른 사이트
- Scripting: 스크립트 코드
-> Cross Site Scripting: 다른(피싱) 사이트를 이용해 사용자의 정보를 탈취하기 위한 스크립트 코드
공격자가 이용자의 입력을 받는 취약한 웹 사이트에 스크립트를 삽입해서 자신이 관리하는 사이트로 사용자의 정보(쿠키, 세션 등)를 보내도록 유도하고, 공격자가 사용자의 권한을 획득하는 공격 방법입니다.
1. 공격자는 프로필 설명 란에 악성 스크립트를 몰래 삽입해 놓고, 사용자에게 친구 신청을 해서 악성 스크립트가 포함된 프로필을 열람하도록 유도합니다.
2. 사용자는 공격자의 프로필을 확인하고, 인증 요소가 포함된 쿠키 또는 세션을 자신도 모르게 공격자에게 전송합니다.
3. 공격자는 이 정보를 이용해 사용자의 권한을 획득합니다.
XSS 공격을 방지하려면, 웹 사이트 사용자의 입력 중 HTML이나 JavaScript 요소가 포함되어 있는지 확인하고 필터링해야 할 것입니다. 사용자도 최대한 의심가는 링크를 클릭하지 않도록 유의해야 하겠죠.
2. CSRF (Cross-Site Request Forgery)
- Cross-Site: 서로 다른 사이트
- Request Forgery: 요청 위조
-> Cross-Site Request Forgery: 서로 다른 사이트 정책을 우회한 요청 위조
공격자가, 사용자가 의도치 않은 요청을 하도록 유도해서 공격자의 요청을 위조하는 공격 방법입니다. 공격자는 이 방법으로 서로 다른 사이트가 간섭할 수 없는 정책을 우회할 수 있습니다.
1. 해커는 위조할 요청이 포함된 링크를 만들어 취약한 웹 사이트에 게시합니다.
2. 사용자는 이 링크를 클릭해 자신의 권한으로 의도치 않은 요청을 서버에 보냅니다.
3. 서버는 적법한 요청으로 판단하고 위조된 요청을 허용해 실행합니다.
CSRF 공격을 방지하려면, CSRF 토큰을 포함해서 요청을 하는 것이 좋습니다.
3. 차이점
간략히 보면 아래와 같은 차이점이 있습니다.
- XSS: 사용자 정보(쿠키, 세션 등)를 탈취해, 사용자의 권한을 갖는다.
- CSRF: 사용자가 서버에 의도치 않은 요청을 하도록 유도한다.
'Fundamental > Web' 카테고리의 다른 글
쿠키 vs localstorage (0) | 2023.07.17 |
---|---|
WordPress.org에 AWS S3 + Cloudfront 적용하기 (0) | 2022.04.08 |
WordPress.org - Hostinger DB 연동하기 (0) | 2022.02.28 |
WordPress.org - 사용자 정의 REST API 추가하기 (0) | 2022.02.28 |
WEB에서 사용되는 이미지 포맷들 (0) | 2021.12.28 |