AWS Cognito 和 CORS 安全问题
AWS Cognito and CORS Security Concern
我有一个 Web 客户端通过 AWS API 网关向 AWS Lambda 发出请求。我正在使用 AWS Cognito 和 Auth0 对用户进行身份验证。
我的问题与来自 AWS API 网关端点的 CORS 响应 header 相关,特别是设置为任何“”的 Access-Control-Allow-Origin 响应 header *'”。本文指出了使用任何“'*'”参数的风险,即 back-end 上的 'hacker can coopt our site to request any method':(CORS Security link).
虽然 Cognito 的身份验证可以证明发出请求的最终用户是他所说的人,但 Cognito 的身份验证不一定证明代表用户发出请求的网站是 mywebsite.com 而不是 attacker.com。
Cognito 是否保证请求来自 mywebsite.com?
是否有安全的方法来实现任何“'*'”Access-Control-Allow-Origin响应header?
Cognito 是否保证请求来自 mywebsite.com?
没有。 Cognito 与您的域无关。它只关心用户 authentication/management.
是否有安全的方法来实现任何“'*'”Access-Control-Allow-Origin响应header?
嗯,是的,也不是。正如您在 post 中所说,Cognito 将对用户进行身份验证 这意味着设置 Access-Control-Allow-Origin: *
后,任何域都可以发出跨源请求,但如果他们无法提供有效的身份验证令牌,然后他们会收到 401 错误。
如果你想限制哪些域可以访问,那么你不能使用*
。 *
是一个通配符,因此允许任何值。因此,如果您只想让 mywebsite.com 能够发出 CORS 请求,请将 *
替换为 mywebsite.com
。这使得只允许来自该域的请求。来自 attacker.com 的请求现在将失败,因为它们没有正确的 header。
我有一个 Web 客户端通过 AWS API 网关向 AWS Lambda 发出请求。我正在使用 AWS Cognito 和 Auth0 对用户进行身份验证。
我的问题与来自 AWS API 网关端点的 CORS 响应 header 相关,特别是设置为任何“”的 Access-Control-Allow-Origin 响应 header *'”。本文指出了使用任何“'*'”参数的风险,即 back-end 上的 'hacker can coopt our site to request any method':(CORS Security link).
虽然 Cognito 的身份验证可以证明发出请求的最终用户是他所说的人,但 Cognito 的身份验证不一定证明代表用户发出请求的网站是 mywebsite.com 而不是 attacker.com。
Cognito 是否保证请求来自 mywebsite.com?
是否有安全的方法来实现任何“'*'”Access-Control-Allow-Origin响应header?
Cognito 是否保证请求来自 mywebsite.com?
没有。 Cognito 与您的域无关。它只关心用户 authentication/management.
是否有安全的方法来实现任何“'*'”Access-Control-Allow-Origin响应header?
嗯,是的,也不是。正如您在 post 中所说,Cognito 将对用户进行身份验证 这意味着设置 Access-Control-Allow-Origin: *
后,任何域都可以发出跨源请求,但如果他们无法提供有效的身份验证令牌,然后他们会收到 401 错误。
如果你想限制哪些域可以访问,那么你不能使用*
。 *
是一个通配符,因此允许任何值。因此,如果您只想让 mywebsite.com 能够发出 CORS 请求,请将 *
替换为 mywebsite.com
。这使得只允许来自该域的请求。来自 attacker.com 的请求现在将失败,因为它们没有正确的 header。