CORS
2024-10-31 07:55:0 Author: mp.weixin.qq.com(查看原文) 阅读量:8 收藏

同源策略的核心概念

同源策略要求在三个方面相同,才能允许访问彼此的资源:

1.协议相同(如 http:// 和 https://)。

2.域名相同(如 example.com 和 sub.example.com 不同)。

3.端口相同(如 http://example.com:80 和 http://example.com:8080 不同)。

如果这三者中有任何一项不同,浏览器将会阻止跨域请求,从而保护用户数据的安全。

具体例子:

假设我们有两个网站:

网站 A: https://www.example.com

网站 B: https://www.anotherexample.com

网站 A 中有一个网页,包含一个 JavaScript 文件,目的是从 B 网站中获取一些敏感数据,例如用户的个人信息。

fetch('https://www.anotherexample.com/api/userinfo')
    .then(response => response.json())
    .then(data => console.log(data));

当这个代码运行时,浏览器会检查:

  • 网站 A 的协议是 https,网站 B 的协议也是 https,协议相同。

  • 网站 A 的域名是 www.example.com,网站 B 的域名是 www.anotherexample.com,域名不同。

  • 假设两个网站都在默认的 443 端口运行,端口相同。

由于域名不同,浏览器会阻止这次跨域请求,报错信息可能是“CORS 头丢失”或者“跨域请求被阻止”。

如何突破同源策略?

虽然同源策略严格限制跨域访问,但有时候需要允许跨域请求。浏览器中突破同源策略的一个常见方法是 跨域资源共享(CORS)。它允许服务器通过设置特定的响应头,告诉浏览器允许来自其他源的请求。

CORS 的例子:

如果网站 B 的服务器希望允许网站 A 访问它的资源,那么它可以在响应头中添加:(其实这是后端开发所做的工作)

Access-Control-Allow-Origin: https://www.example.com

这样,浏览器会允许网站 A 访问网站 B 的资源,突破了同源策略的限制。

要使网站 B 的服务器在响应头中添加 Access-Control-Allow-Origin,通常需要在服务器端进行配置。下面举个例子来说明:

Nginx 配置 CORS

在 Nginx 服务器中,可以通过添加以下配置来允许跨域访问。

步骤:

在 Nginx 的配置文件(通常是 /etc/nginx/nginx.conf 或者 /etc/nginx/sites-available/default)中,添加以下内容:

server {
    listen 80;
    server_name www.anotherexample.com;

    location /api/ {
        # 允许特定域名访问
        add_header 'Access-Control-Allow-Origin' 'https://www.example.com';

        # 允许的请求方法,比如 GET, POST
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';

        # 允许的请求头
        add_header 'Access-Control-Allow-Headers' 'Content-Type';

        # 如果需要处理复杂的跨域请求
        if ($request_method = 'OPTIONS') {
            add_header 'Access-Control-Allow-Origin' 'https://www.example.com';
            add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
            add_header 'Access-Control-Allow-Headers' 'Content-Type';
            return 204;  # 响应空的请求体
        }
    }
}

如果你是一个长期主义者,欢迎加入我的知识星球,我们一起往前走,每日都会更新,精细化运营,微信识别二维码付费即可加入,如不满意,72 小时内可在 App 内无条件自助退款

往期回顾

一款bp神器

ssrf绕过新思路

dom-xss精选文章

年度精选文章

Nuclei权威指南-如何躺赚

漏洞赏金猎人系列-如何测试设置功能IV

漏洞赏金猎人系列-如何测试注册功能以及相关Tips


文章来源: https://mp.weixin.qq.com/s?__biz=MzIzMTIzNTM0MA==&mid=2247496243&idx=1&sn=7a8cff79b009cea9d2e340ba30d990e7&chksm=e8a5f850dfd27146fd92b96866b30bf9dcb1215bc5266e9e2beb068568758b10ce46f1f67b16&scene=58&subscene=0#rd
如有侵权请联系:admin#unsafe.sh