Access-Control-Allow-Origin은 Cross-Origin Resource Sharing (CORS)를 구현하기 위해 사용되는 HTTP 응답 헤더 중 하나입니다. 이 헤더를 사용하여 다른 도메인에서 해당 자원에 접근할 수 있는 권한을 부여할 수 있습니다.
그러나, 모든 도메인에 대해 Access-Control-Allow-Origin: *와 같은 와일드카드를 사용하여 모든 도메인에서 접근을 허용하는 것은 보안상 위험할 수 있습니다. 왜냐하면, 이를 허용하면 악의적인 공격자들이 자신들의 도메인에서 해당 자원에 접근하여 보안에 취약한 정보를 탈취하거나, 다른 사용자들에게 피해를 줄 수 있기 때문입니다.
따라서, 보안상 취약성을 최소화하기 위해서는 필요한 경우에만 Access-Control-Allow-Origin을 특정 도메인으로 설정하고, 그 외의 도메인에서는 해당 자원에 대한 접근을 차단하는 것이 좋습니다.
특정 도메인만 Access-Control-Allow-Origin을 허용하려면,
서버 측에서 해당 도메인만 허용하는 설정을 해주어야 합니다.
대부분의 서버에서는 CORS 설정을 통해 도메인별로 Access-Control-Allow-Origin 허용 여부를 설정할 수 있습니다.
Access-Control-Allow-Origin 허용 도메인을 example.com으로 설정하는 경우 아래와 같이 코드를 작성할 수 있습니다.
// HttpServletResponse 객체에 CORS 설정 추가
response.setHeader("Access-Control-Allow-Origin", "https://example.com");
만약, 여러 도메인을 허용하고 싶은 경우에는 Access-Control-Allow-Origin 값에 쉼표(,)로 구분하여 여러 도메인을 추가할 수 있습니다.
// HttpServletResponse 객체에 CORS 설정 추가
response.setHeader("Access-Control-Allow-Origin", "https://example.com, https://test.com");
또한, Spring Framework에서는 @CrossOrigin 어노테이션을 사용하여 특정 컨트롤러나 메서드에서 CORS 설정을 간편하게 적용할 수도 있습니다.
@RestController
public class MyController {
// 특정 도메인만 허용하는 CORS 설정 적용
@CrossOrigin(origins = "https://example.com")
@GetMapping("/my-endpoint")
public ResponseEntity<String> myEndpoint() {
// ...
}
}
'TIL (Today I Learned)' 카테고리의 다른 글
오늘의 리팩토링 1 - try-with-resources || Files 클래스와 Stream API (0) | 2023.03.23 |
---|---|
Java Thread의 wait(), notify() and monitor (0) | 2023.03.22 |
내가 사용하는 기술 (간략) 정리 01. PostgreSQL, Elasticsearch(OpenSearch) (0) | 2023.02.15 |
String배열과 ArrayList, 무엇을 써야되나? (0) | 2022.07.13 |
소스 분석 01 (0) | 2022.06.23 |