2014-12-04 66 views
2

我想使用Microsoft Azure存储Android API上传手机相机拍摄的图像。 这里是喜欢它: https://github.com/azure/azure-storage-androidAzure存储Android API,它安全吗?

我的问题是:帐户名和密钥存储在里面的应用程序的字符串,那么任何人都可以反编译它,让这些凭据,然后,例如,上传大量数据这将花费我钱。

那么在android应用程序上使用它是否安全? 我的其他选择是什么?

回答

6

不应该将密钥存储在您的应用程序中。你是对的,有人可以反编译你的应用程序并获得钥匙。此外,如果您因任何原因需要更改帐户密钥,则用户需要再次下载应用程序。

你应该做的是在有人需要上载图像时使用Shared Access Signature (SAS)。您可以使用Azure移动服务或编写自己的Web服务以按需获得SAS(具有写入权限),并在您的应用程序中使用该服务上传图像到您的存储帐户。

0

你说得对。如果您要将凭证发送到您的应用中的Azure存储帐户,那么任何人都可以获得凭据,并且可以对其执行任何操作。

通常,您会创建一个访问Azure存储并限制每个用户可能上载的数据量的中间Web服务(例如托管在Azure网站上)。该应用程序只与您的Web服务通信,因此不需要知道存储帐户的凭据。

很明显,您需要某种内置于您的Web服务中的用户管理,例如,自定义帐户,Google登录(大多数Android用户将拥有Google帐户),OpenID,OAuth,...

+0

尽管我同意需要中间Web服务,但我不同意它应该充当移动应用程序和存储之间的网关。想象一下,大量用户使用该应用程序上传图像的场景。在这种情况下,Web服务将成为瓶颈。我的建议(如我的答案中所述)将使用此服务(或Azure移动服务)创建共享访问签名,并让应用直接与存储进行交互。 – 2014-12-04 13:32:09

+0

是的,你说得对,SAS是一个更好的解决方案。我想指出的重要事情是需要某种中间Web服务。 – 2014-12-04 13:56:58