📌 쉽게 정리해보기
- CORS: 브라우저가 다른 출처에 접근할 수 있는지를 제어하는 정책 (브라우저 보호)
- cors(cross origin resource sharing) 은 다른 서버(url)에서 재료를 가져와 사용할 때 필요한 보안 정책이다.
- 서버(url)로 표기 했지만 정확히는 origin(출처)라고 하며, 통신방식(http/https) + 주소(domain/IPaddr) + 포트(8080)를 합쳐서 origin(출처)라고 한다.
- 에러의 판단은 브라우저가 요청과 응답 내용을 비교하여 판단한다.
- 브라우저가 오류를 확인하는 방법은, 서버에 재료를 요청할 때 보낸 자신의 origin이 서버가 반환한 응답 속에 허용 리스트에 있는지 여부로 판단한다.
- 요청할 때 origin과 응답의 허용 origin 리스트는 요청/응답 header 속에 포함되어있다.
- XSS: 브라우저가 악성 스크립트를 실행하지 못하게 막는 공격 방어 (사용자 보호)
- xss (cross site scripting)은 해커가 특정 사이트 안에 자신의 코드를 심어 원하는 정보를 강제로 탈취하는 것이다.
- 사이트의 입력창을 이용하여 js 스크립트를 넣어 고객 정보 혹은 DB에 보관된 비밀 정보를 탈취하는 형태가 많다.
- 스크립트를 넣기 위해서는 태그 형태의 입력이 많으므로, 입력된 내용이 예상되는 형태(문자열/숫자 등)가 맞는지 검증하는 것으로 공격을 방지한다.
✅ 1. CORS (Cross-Origin Resource Sharing)
🔹 개념
CORS는 다른 출처(origin) 간에 리소스를 요청할 때, 브라우저가 이를 허용할지 말지를 결정하는 정책입니다.
브라우저는 보안상, 스크립트가 자기 출처(origin) 이외의 API나 리소스를 요청하는 것을 제한합니다.
출처(origin): 프로토콜 + 도메인 + 포트
예: https://example.com:443
🔹 예상 공격 시나리오
1. 공격자가 자신의 사이트 evil.com에 사용자 A를 접속시킴
2. evil.com에서 JavaScript가 `https://bank.com/account`에 요청 시도
3. CORS 정책에 의해 bank.com에서 `Access-Control-Allow-Origin: evil.com` 없으면 브라우저가 차단 → 보안 유지
✅ 2. XSS (Cross-Site Scripting)
🔹 개념
XSS는 웹 페이지에 악성 스크립트를 삽입하고, 그것이 브라우저에서 실행되게 하여 정보를 훔치거나 조작하는 공격입니다.
🔹 예상 공격 시나리오
1. 웹사이트에 댓글 기능이 있음
2. 사용자가 댓글에 <script>alert('Hacked')</script> 삽입
3. 이 댓글이 필터 없이 출력됨
4. 다른 사용자가 해당 페이지를 열면 script가 실행 → 세션 탈취, 쿠키 탈취 등 가능
🔍 CORS vs XSS 차이 정리
구분 | CORS | XSS |
의미 | 교차 출처 리소스 요청 보안 정책 | 악성 스크립트를 삽입하고 실행시키는 공격 |
방어 대상 | 브라우저가 API 요청을 허용할지 판단 | 악성 코드 실행 자체 방지 |
작동 위치 | 브라우저가 정책 적용 | 브라우저가 악성 코드 실행 |
공격 방식 | 브라우저가 타 사이트 리소스를 요청함 | 사용자가 열람 중인 페이지에 코드 삽입 |
대응 방식 | 서버에서 Access-Control-Allow-Origin 설정 | 입력값 필터링, CSP, escaping 등 |
공격자 조건 | 악성 JavaScript가 외부 출처 요청 | 사용자가 악성 스크립트가 포함된 페이지 열람 |
---
참고 출처
1. CORS 개념
'WEB' 카테고리의 다른 글
[JS] prototype 과 promise (4) | 2025.06.18 |
---|---|
[JS] 배열 내 특정 요소 추출 시, 중복을 제거하여 리스트 반환 const roomList = [...new Set(socketList.map(item => item.rooms))].filter(Boolean); (2) | 2025.06.10 |
WESOCKET server adapter (0) | 2025.06.09 |