我有一个Web客户端通过AWS API Gateway向AWS Lambda发出请求。我正在使用AWS Cognito和Auth0来验证用户身份。
我的问题与AWS API Gateway端点的CORS响应头有关,特别是设置为任何“'*'”的Access-Control-Allow-Origin响应头。本文指出了使用任何“'*'”参数的风险,即“黑客可以在我们的后端使用我们的网站来请求任何方法”:( CORS Security link)。
虽然Cognito的身份验证可能证明提出请求的最终用户是他所说的人,但Cognito的身份验证并不一定证明代表用户提出请求的网站是 mywebsite.com 而不是 attacker.com 。
Cognito是否保证请求来自mywebsite.com?
是否有一种安全的方法来实现任何“'*'”Access-Control-Allow-Origin响应标头?
答案 0 :(得分:0)
Cognito是否保证请求来自mywebsite.com?
没有。 Cognito与您的域名无关。它所关心的只是用户身份验证/管理。
是否有一种安全的方式来实施任何"' *'" Access-Control-Allow-Origin响应头?
是的,不是。正如您在帖子中所说,Cognito将对用户进行身份验证,这意味着使用Access-Control-Allow-Origin' *'设置,允许任何域发出Cross Origin请求,但如果他们无法提供有效的身份验证令牌,则会收到401错误。
如果您想限制哪些域可以访问,则您无法使用' '。 ' '是一个通配符,因此允许任何值。因此,如果您希望只让mywebsite.com能够提出CORS请求,那么请更换' *'与' mywebsite.com'。这使得它只允许来自该域的请求。来自attacker.com的请求现在将失败,因为他们没有合适的标题。