亚马逊简单数据库是否支持Javascript接口?

5
我正在查看亚马逊简单数据库文档。他们仅提到了服务器端语言。
是否有任何方法可以直接从客户端向数据库插入数据,而无需通过服务器?
如果没有,为什么?
5个回答

5
是和不是。由于需要保护AWS的密钥(黑客可能会利用它来滥用您的账户),因此不能直接在JS中验证请求。
虽然可以在JS中创建一个实现,但它本质上是不安全的。对于一些内部使用的实际应用程序而言,它可能永远无法安全地部署(因为这将暴露您的机密密钥)。相反,您可以使用服务器来验证对SimpleDB的请求,并让JS执行对Amazon的实际请求。虽然这有点绕,但它能够工作。
缺点是您需要在客户端上进行大量处理。您还可能获取比应用程序消耗/输出更多的数据,因此在客户端而不是服务器上处理数据可能会遇到更多的延迟,因为您正在向用户传输更多的数据并且以更慢的速度处理它。
希望这可以帮助你。

1
现在你可以(大多数情况下)在客户端安全地执行此操作,而不会泄露秘密密钥。请参见我的下面的答案和我的相关答案https://dev59.com/w1TTa4cB1Zd3GeqPrEs4。您可以使用99%的客户端调用,剩下的1%由小型、安全的服务器端组件处理。 - user23987

2
如果不是这样,那么为什么呢?
安全性。您使用开发人员帐户对数据库进行身份验证。亚马逊不知道您的最终用户(它需要知道才能直接从浏览器进行身份验证)。由应用程序代码确定允许哪些最终用户执行操作,哪些不允许。
话虽如此,有一个名为Javascript Scratchpad for Amazon SimpleDB的示例应用程序。它确实可以直接从浏览器访问SimpleDB(您必须输入AWS凭据)。

可能 CouchDB 是我正在寻找的东西吗? - JSNewbie
好的,你仍然需要在浏览器之外的某个地方配置访问权限(这样它就无法被黑客攻击)。 - Thilo
现在你可以(大多数情况下)在客户端安全地执行此操作,而不会泄露秘密密钥。请参见我的下面的答案和我的相关答案https://dev59.com/w1TTa4cB1Zd3GeqPrEs4。您可以使用99%的客户端调用,剩下的1%由小型、安全的服务器端组件处理。 - user23987

1

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并为每个用户提供其自己的userid和用于请求签名的key更安全。当然,让每个用户使用相同的userid和证书是不安全的。


0

0

参见 this answer">此答案,该答案为允许不受信任的客户机从 SimpleDB 中安全、匿名、只读访问的类似问题提供了解决方案:anonymous read with amazon simpledb">Amazon SimpleDB 匿名只读访问。

与该答案相比有一些变化:

  • 不要将访问策略设置为只读。但是,它允许细粒度的控制,因此您仍然可能希望限制所允许的写入类型。
  • 不要使用匿名方式。AWS 文档中有关基于令牌的身份验证(token based auth)以及示例应用程序(example apps)显示了两个平行路径:使用您的凭据进行非匿名的 AWS/联合访问,但不公开您的秘密密钥,或者进行匿名访问。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接