2

使用亚马逊刚刚发布的 javascript web sdk,如何防止用户(即使在联合身份验证之后)滥用对数据库的访问权限?

例如,您如何限制他们可以为字段提交的字符串的长度?

此外,您如何限制他们为多行表提交的条目数?或者在s3上,限制文件的数量,或者文件的大小,他们可以提交吗?

我可以想象如何在 node.js 实现中控制这一点,但似乎有人可以在客户端编写自己的脚本来规避规则。

编辑:只是为了澄清我们正在讨论的开发工具包:AWS SDK for JavaScript in the Browser

4

2 回答 2

0

我建议这个问题的唯一好的答案是非常直接的,即使你可能不喜欢它:“不要让他们直接访问资源”,紧随其后的是“不信任任何人”。您的服务的凭据仅属于完全受信任的实体,无论这些凭据理论上授权什么,因此我不确定您要保护的对象是谁。

您可以通过验证他们对您的应用程序服务器的请求并将请求发送到数据库或其他底层系统(或不发送)来限制他们可以提交的字段的大小,具体取决于请求是否有效。在你的堆栈中正确实施,无论客户端发生什么,这些限制都不可能违反,相反,任何假定客户端将正确、可预测、合理和按预期运行的实施都是确实是非常幼稚的实现。

控制这些事情是您的应用程序服务器的工作,通过您的API(您为应用程序与客户端交互而设计的 API)接收客户端请求,验证它们,并向底层系统发送调用以完成它所发出的请求认为合法。

于 2013-11-03T09:25:10.830 回答
0

您可以使用 IAM 并为每个用户提供仅访问其记录的特定权限。

例如,您可以使用 DynamoDB 细粒度访问控制 ( http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/FGAC_DDB.html ),当与 Web 身份一起使用时可以提供对开始记录的访问权限用他的用户 ID。在此处阅读更多信息:http: //aws.typepad.com/aws/2013/10/fine-grained-access-control-for-amazon-dynamodb.html

于 2013-11-03T14:54:41.453 回答