有人可以使用经过硬编码的“ AWS-cognito-identity-poolID”侵入我的s3吗?

问题描述 投票:7回答:3

[首先,我在客户端JS文件中将aws“ accessKey”和“ securityKey”硬编码为硬编码,但是它非常不安全,因此我读到了“ aws-cognito”,并以以下方式实现了新的JS:

仍然让我感到困惑的是,有人可以使用经过硬编码的“ AWS-cognito-identity-poolID”侵入我的s3吗?还是我应该采取任何其他安全措施

谢谢,Jaikey

amazon-web-services security amazon-s3 amazon-cognito
3个回答
3
投票

Hack的定义

我不确定在您所提出的问题中,黑客意味着什么。我假设您实际上是在说“任何人都可以执行不同于上载文件的操作”,其中包括删除或访问存储桶中的对象。

您的解决方案

正如Ninad前面已经提到的那样,您可以通过启用“启用对未经身份验证的身份的访问” [1]来使用当前方法。然后,您需要创建两个角色,其中一个角色用于“未经身份验证的用户”。您可以将该角色PutObject授予S3存储桶。这将允许访问您页面的每个人将对象上传到S3存储桶。我认为您打算这样做,并且从安全角度考虑也可以,因为IdentityPoolId是公共价值(即非机密)。

另一个解决方案

我想,您不需要使用Amazon Cognito即可实现所需的功能。向S3添加一个存储桶策略可能就足够了,该策略向所有人授予PutObject的权限。

这安全吗?

但是,我会not建议启用对您的S3存储桶的直接公共写访问权限。如果有人通过向您的上传表单发送垃圾邮件来滥用您的网站,则您将承担S3投放操作和数据存储的费用。

这是一种更好的方法,它可以通过Amazon CloudFront发送数据,并使用基于速率的规则[2]应用WAF,或者在S3上传之前实施自定义速率限制服务。这将确保您可以对恶意活动做出适当的反应。

参考

[1]https://docs.aws.amazon.com/cognito/latest/developerguide/identity-pools.html[2] https://aws.amazon.com/about-aws/whats-new/2019/08/lower-threshold-for-aws-waf-rate-based-rules/


2
投票

是的,如果您通过客户端的“ AWS-Cognito-Identity-Pool”进行使用,则s3存储桶是安全的,还启用了CORS,该功能仅允许来自特定域的操作,以确保有人尝试直接上传或列出存储桶时,将获得“访问被拒绝”。


0
投票

还请确保已经设置了硬编码访问的文件读/写凭据,以便只能由本地节点读取,其他任何人都不能读取。顺便说一句,答案始终是肯定的,这只是一个人愿意让自己“入侵”的问题。遵循人们在这里所说的话,您就可以安全了。

© www.soinside.com 2019 - 2024. All rights reserved.