我正在查看 amazon simpledb 文档。他们只提到服务器端语言。
无论如何,是否可以直接从客户端将数据插入数据库而不通过服务器?
如果没有,怎么会?
我正在查看 amazon simpledb 文档。他们只提到服务器端语言。
无论如何,是否可以直接从客户端将数据插入数据库而不通过服务器?
如果没有,怎么会?
是和不是。由于您需要保护 AWS 的密钥(黑客可能会使用它来滥用您的帐户),因此您无法直接在 JS 中验证请求。
虽然您可以在 JS 中创建实现,但它本质上是不安全的。对于某些内部用途而言,它永远无法安全部署(因为这会暴露您的密钥)。您可以做的是使用您的服务器对 SimpleDB 的请求进行身份验证,并让 JS 执行对 Amazon 的实际请求。虽然有点绕,但还是可以的。
缺点是您需要在客户端进行大量处理。您还可能获取比您的应用程序消耗/输出更多的数据,因此在客户端而不是服务器上处理数据可能会遇到更多延迟,这仅仅是因为您将更多数据传输给用户并且处理速度更慢。
希望这可以帮助
如果没有,怎么会?
安全。您使用您的开发人员帐户向数据库进行身份验证。亚马逊不了解您的最终用户(它需要了解,以便直接从浏览器验证访问)。由应用程序代码决定最终用户可以做什么和不可以做什么。
也就是说,有用于 Amazon SimpleDB示例应用程序的Javascript Scratchpad 。它确实可以直接从浏览器访问 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
请参阅有关允许从不受信任的客户端对 SimpleDB 进行安全、匿名、只读访问的类似问题的答案:使用 amazon simpledb 进行匿名读取。
该答案的一些变化: