2014-01-08 34 views
3

我需要一个底层web/javascript安全。如何在Web应用程序中使用Javascript安全地访问Windows Azure移动服务?

How to use an HTML/JavaScript client for Windows Azure Mobile Services,在客户端的JavaScript,其中包括一个链接到MobileServices.Web-1.0.0.min.js后,你应该创建一个客户是这样的:

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

这意味着包括我在网页上的JavaScript的AppKey 。我应该担心AppKey被公开吗?

而且,它似乎很容易有人在放一个XHR断点阅读X-ZUMO-APPLICATIONX-ZUMO-AUTH头,而在已记录时,这样做的用处有所用跨域资源共享白名单减少使得REST调用,但是如何阻止某人使用这些信息将JavaScript添加到页面并对我的后端数据库执行任意操作?在这种情况下,将表权限限制为已通过身份验证的用户将无济于事。

我需要关心吗?银行应用程序对这类事情做些什么?

回答

3

在您共享的同一个链接中,应用程序密钥被定义为不安全的机制来验证用户 - 由移动服务生成并与您的应用程序一起分发并显示在客户端生成的请求中的唯一值。虽然对于限制从随机客户端访问移动服务非常有用,但此密钥不安全,不应用于对您的应用的用户进行身份验证。

通过使用ACS或通过开放认证在所有端点上启用某些认证时,如果您主ASP.Net/PHP等页面获得授权,则浏览器将通过cookie处理下一个身份联合体直到你的会话结束。

在大多数具有HTTPS的应用程序中,都可以在中等攻击下保护Man。此外,cookies上强大的加密逻辑以及非常特定的到期时间也会增加安全性。此外,基于IP地址的检查肯定有助于提高安全性。

1

ramiramilu的回答涵盖了大部分问题。还有一个,我会添加更多的东西:

而且,它似乎很容易有人在放一个XHR断点阅读X-谟,应用和X-谟-AUTH头,同时使一个REST调用登录时

是的,有人可以添加一个断点并找出它们发送的X-ZUMO-AUTH标头的值。但是这个头文件的值对登录的用户是特定的(在这种情况下,它会是“攻击者”[他/她]自己) - 它不能从其他人那里得到信息。还有更简单的方法来获取该标题的值(只需浏览到https://<mobileservicename>.azure-mobile.net/login/<authProvider>,输入凭证后就会看到在URI中编码的标题)。

+0

X-ZUMO-AUTH标题值不是特定于用户的。它是所有客户使用的应用程序密钥,并且是相同的。这只是停止随机访问。 –

+0

这是不正确的。 X-ZUMO-AUTH **特定于登录用户**。您可能正在考虑X-ZUMO-APPLICATION。 – carlosfigueira

+0

我的不好。这是X-ZUMO_APPLICATION。抱歉carlosfigueira。 –

相关问题