【发布时间】:2010-08-24 05:36:16
【问题描述】:
我正在查看亚马逊 simpledb 文档。他们只提到服务器端语言。
是否可以直接从客户端将数据插入数据库而不通过服务器?
如果没有,怎么会?
【问题讨论】:
标签: javascript authentication amazon-web-services amazon-simpledb
我正在查看亚马逊 simpledb 文档。他们只提到服务器端语言。
是否可以直接从客户端将数据插入数据库而不通过服务器?
如果没有,怎么会?
【问题讨论】:
标签: javascript authentication amazon-web-services amazon-simpledb
是的,不是的。由于您需要保护 AWS 的密钥(黑客可能会使用它来滥用您的帐户),因此您无法直接在 JS 中对请求进行身份验证。
虽然您可以在 JS 中创建实现,但它本质上是不安全的。对于某些内部用途来说很实用,它永远无法安全地部署(因为这会暴露你的密钥)。您可以做的是使用您的服务器对 SimpleDB 的请求进行身份验证,并让 JS 执行对 Amazon 的实际请求。虽然有点迂回,但还是可以的。
缺点是您需要在客户端进行大量处理。您还可能获取比您的应用程序消耗/输出更多的数据,因此在客户端而不是服务器上处理数据可能会遇到更多延迟,这仅仅是因为您将更多数据传输给用户并且处理速度更慢。
希望对你有帮助
【讨论】:
如果没有,怎么会?
安全。您使用您的开发人员帐户向数据库进行身份验证。亚马逊不了解您的最终用户(它需要了解,以便直接从浏览器进行访问身份验证)。由应用程序代码决定最终用户可以做什么和不可以做什么。
也就是说,有Javascript Scratchpad for Amazon SimpleDB 示例应用程序。它确实可以直接从浏览器访问 SimpleDB(您必须输入您的 AWS 凭证)。
【讨论】:
SimeplDBAdmin 是一个基于 Javascript/PHP 的界面:
http://awsninja.com/2010/07/08/simpledbadmin-a-phpmyadmin-like-interface-for-amazon-simpledb/
PHP 端是一个中继脚本[relay.php],它将传递来自 Javascript 客户端的请求并将它们发送到服务器,从服务器获取响应并为客户端重新格式化。这是为了轻松解决 Javascript 的跨域问题[如果 Web 客户端从 www.example.com 下载了包含 javascript 代码的网页,则默认情况下只允许 javascript 连接回 www.example.com] .
其他一切,包括请求签名,都由 Javascript 代码完成。
另外请注意,亚马逊最近发布了一项新的测试服务,允许您在您的亚马逊账户下设置子账户。 simpleDB 保护非常基本[每个帐户打开或关闭],但由于它确实提供了一些有限形式的请求跟踪,因此可以说使用 Javascript 并为每个用户提供他们自己的用户 ID 和请求签名密钥更安全。当然,让每个用户都使用相同的用户 ID 和证书是不安全的。
【讨论】:
有一个免费的纯 JavaScript 界面可用。请看https://chrome.google.com/webstore/detail/ddhigekdfabonefhiildaiccafacphgg
【讨论】:
请参阅this answer 以了解有关允许不受信任的客户端对 SimpleDB 进行安全、匿名、只读访问的类似问题:anonymous read with amazon simpledb。
该答案的一些变化:
【讨论】: