gpt4 book ai didi

php - 具有动态 cors header 的 API 漏洞

转载 作者:行者123 更新时间:2023-12-05 04:11:12 25 4
gpt4 key购买 nike

我一直在阅读有关如何正确保护支持动态 cors header 的 API 的信息。不确定我是否完全理解通配任何子域的问题。

if (preg_match('|\.?my-site.com$|', $_SERVER['SERVER_NAME'])) {
header('Access-Control-Allow-Origin: *');
header('Vary: Origin,Accept-Encoding');
}

(我的API同时支持HTTP和HTTPS,前端是Varnish)

问题

  1. 与发出请求的实际来源相比,使用 Access-Control-Allow-Origin: * 是否有缺点?
  2. 通过添加 Vary: Origin, Accept-Encoding 我可以获得哪些安全优势?我在阅读有关缓存中毒的文章时了解到对它们的需求,但不能说我理解这里的含义。

最佳答案

Is there a drawback to using Access-Control-Allow-Origin: * vs the actual origin making the request?

问题中概述的情况的唯一缺点是,如果您想在请求中包含凭据,如果 Access-Control-Allow-Origin 值为 ,则不能*。参见 Credentialed requests and wildcards在 MDN HTTP 访问控制 (CORS) 文章中。

所以看起来您可能想要做的是,让您的 PHP 代码获取 Origin 请求 header 的值并将其回显到 Access-Control-Allow -Origin 值:

if (preg_match('|\.?my-site.com$|', $_SERVER['SERVER_NAME'])) {
header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
header('Vary: Origin,Accept-Encoding');
}

Not sure if I fully understand the problem with wildcarding any subdomain.

唯一允许来自任何来源的请求成为问题的情况是,如果您的服务运行在内部网内或防火墙后面。

请参阅 Is it safe to enable CORS to * for a public and readonly webservice? 中的相关答案

关于php - 具有动态 cors header 的 API 漏洞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43193644/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com