如何在Web应用中使用Javascript安全地访问Windows Azure Mobile Services?

3

我需要一份关于web/javascript安全的入门指南。

根据如何使用HTML/JavaScript客户端与Windows Azure移动服务合作,在客户端的javascript中,包含链接MobileServices.Web-1.0.0.min.js后,您应该像这样创建一个客户端:

var MobileServiceClient = WindowsAzure.MobileServiceClient;
var client = new MobileServiceClient('AppUrl', 'AppKey');

这意味着在页面的javascript中包含我的AppKey。我应该担心AppKey被公开吗?
另外,似乎有人很容易将XHR断点放入REST调用中以读取X-ZUMO-APPLICATION和X-ZUMO-AUTH头信息。虽然通过跨域资源共享白名单可以降低此操作的有效性,但是如果有人获取了这些信息,他们能否添加javascript到页面并对我的后端数据库执行任意操作呢? 将表权限限制为已认证用户无法在这种情况下提供帮助。
我需要担心吗?银行类应用程序会对这种情况采取什么措施吗?
2个回答

3
在您分享的同一个链接中,应用程序密钥被定义为一种不安全的机制来验证用户 - Mobile Services 生成的唯一值,分发给您的应用程序,并在客户端生成请求时呈现。虽然它有用于限制随机客户端访问您的移动服务,但此密钥并不安全,不应用于验证您应用程序的用户。 此外,当您启用所有端点上的某些身份验证(使用 ACS 或通过 Open Authentication),如果您的主 ASP.Net/PHP 等页面已经得到授权,则浏览器将通过 cookie 处理身份联合以进行下一个正在进行的调用,直到会话结束。
在大多数应用程序中,使用 HTTPS 可以保护免受中间人攻击。此外,对 cookie 进行强加密逻辑和非常特定的过期时间将提高安全性水平。此外,基于 IP 地址的检查肯定有助于提高安全性。

1
ramiramilu的回答基本上涵盖了问题的大部分。还有一件事我要补充一下:
此外,对于已登录的用户,在进行REST调用时,似乎很容易就可以设置XHR断点以读取X-ZUMO-APPLICATION和X-ZUMO-AUTH头。
是的,有人可以添加断点并找出他们发送的X-ZUMO-AUTH标头的值。但该标头的值是特定于已登录用户(在这种情况下,它将是“攻击者”[他/她]本身)-不能从该标头中获取其他人的信息。甚至有更简单的方法来获取该标头的值(只需浏览到 https://<mobileservicename>.azure-mobile.net/login/<authProvider>,然后在输入您的凭据后,您将看到编码在URI中的标题)。

X-ZUMO-AUTH头值不是特定于用户的。它是一个应用程序密钥,由所有客户端使用且相同。这只是防止随机访问。 - Kartik Sharma
那不正确。X-ZUMO-AUTH 是特定于已登录用户的。你可能在想 X-ZUMO-APPLICATION。 - carlosfigueira
我的错。应该是X-ZUMO_APPLICATION。抱歉,carlosfigueira。 - Kartik Sharma

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