Javascript 托管在公共域(S3)上的网页是否容易通过同源策略被OAuth 2.0令牌窃取?
我有一个网页,它使用JavaScript通过使用OAuth 2.0的Gmail API访问用户的Gmail帐户,我想在Amazon的S3服务上托管HTML和JS文件 出于这个原因,我已在的凭据页面中授权为一个源URI。我的页面工作得很好,但它让我想知道: 如果我的页面与S3上托管的所有其他web页面共享相同的源URI,这是否意味着另一个页面将满足相同的源策略,并允许访问我页面的访问令牌 例如,假设一个用户刚刚允许我的应用访问他的Gmail帐户。Google看到一个已批准的源URI并发回一个访问令牌 现在想象一下,S3上托管的另一个页面复制了我的应用程序的客户端ID(在JS中作为变量公开存储),并反复请求Google提供访问令牌。一旦我的用户授予对我的页面的访问权,另一个页面不也会从Google接收令牌吗,因为它满足相同的源URIJavascript 托管在公共域(S3)上的网页是否容易通过同源策略被OAuth 2.0令牌窃取?,javascript,amazon-s3,oauth-2.0,google-api,google-oauth,Javascript,Amazon S3,Oauth 2.0,Google Api,Google Oauth,我有一个网页,它使用JavaScript通过使用OAuth 2.0的Gmail API访问用户的Gmail帐户,我想在Amazon的S3服务上托管HTML和JS文件 出于这个原因,我已在的凭据页面中授权为一个源URI。我的页面工作得很好,但它让我想知道: 如果我的页面与S3上托管的所有其他web页面共享相同的源URI,这是否意味着另一个页面将满足相同的源策略,并允许访问我页面的访问令牌 例如,假设一个用户刚刚允许我的应用访问他的Gmail帐户。Google看到一个已批准的源URI并发回一个访问令
我意识到解决这个潜在问题的一个方法是将我的网页托管在我可以控制的域上,但我很好奇这是否是唯一的方法。避免潜在问题的更明显的方法似乎是使用S3存储桶的虚拟url格式,
https://bucket-name.s3-us-west-2.amazonaws.com/key
(用适当的区域替换,或者用“s3”代替美国标准)除非您的bucket名称中有一个点…在这种情况下,创建一个没有点的bucket名称…不?好主意。这正是我希望s3的工作方式,避免了任何可能的同源问题。谢谢!