我有一个 Web 客户端通过 AWS API Gateway 向 AWS Lambda 发出请求。我使用 AWS Cognito 和 Auth0 来对用户进行身份验证。
我的问题与来自 AWS API Gateway 端点的 CORS 响应标头相关,特别是设置为任何“' * '”的 Access-Control-Allow-Origin 响应标头。本文指出了使用任何“' * '”参数的风险,即“黑客可以在我们的后端选择我们的网站来请求任何方法”:(CORS 安全链接 https://www.pivotpointsecurity.com/blog/cross-origin-resource-sharing-security/).
虽然 Cognito 的身份验证可以证明发出请求的最终用户就是他所说的人,但 Cognito 的身份验证不一定证明代表用户发出请求的网站是mywebsite.com而不是攻击者网站.
Cognito 是否保证请求来自 mywebsite.com?
是否有一种安全的方法来实现任何“' * '” Access-Control-Allow-Origin 响应标头?
Cognito 是否保证请求来自 mywebsite.com?
不会。Cognito 不知道您的域。它所关心的是用户身份验证/管理。
是否有一种安全的方法来实现任何“' * '” Access-Control-Allow-Origin 响应标头?
嗯,是的,也不是。正如您在帖子中所说,Cognito 将对用户进行身份验证,这意味着Access-Control-Allow-Origin: *
设置后,任何域都可以发出跨源请求,但如果它们无法提供有效的身份验证令牌,则会收到 401 错误。
如果您想限制哪些域可以访问,那么您不能使用*
. *
是通配符,因此允许任何值。因此,如果您只想让 mywebsite.com 能够发出 CORS 请求,请替换*
with mywebsite.com
。这使得仅允许来自该域的请求。来自 Attacker.com 的请求现在将失败,因为它们没有正确的标头。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)