我需要一个入门网站/ javascript安全性。
根据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是否公开?
此外,在登录时进行REST调用时,有人可以放入XHR断点来读取X-ZUMO-APPLICATION
和X-ZUMO-AUTH
标题,这似乎很容易。跨域资源共享白名单,但是什么阻止有人将此信息添加到页面并在我的后端数据库上执行任意操作?在这种情况下,将表权限限制为经过身份验证的用户无济于事。
我需要担心吗?银行应用程序对此类事情做了什么?
答案 0 :(得分:3)
在您共享的同一链接中,应用程序密钥被定义为对用户进行身份验证的不安全机制 - 由移动服务生成的唯一值,随应用程序一起分发,并在客户端生成的请求中显示。虽然限制从随机客户端访问您的移动服务非常有用,但此密钥并不安全,不应用于对您应用的用户进行身份验证。
当您使用ACS或通过开放身份验证在所有端点上启用某些身份验证时,如果主ASP.Net/PHP等页面获得授权,则浏览器将通过cookie处理身份联合以进行下一次 - 打电话直到你的会话结束。
在大多数具有HTTPS的应用程序中,可以防止中间人攻击。 Cookie上强大的加密逻辑以及非常具体的到期时间将增加安全性。此外,基于IP地址的检查肯定有助于提高安全性。
答案 1 :(得分:1)
此外,在登录时进行REST调用时,有人可以轻松地将XHR断点放入读取X-ZUMO-APPLICATION和X-ZUMO-AUTH标头
是的,有人可以添加断点并找出他们发送的X-ZUMO-AUTH标头的值。但是该标头的值特定于登录用户(在这种情况下,它将是“攻击者”[他/她]自己) - 它将无法从该标头中获取其他人的信息。还有更简单的方法来获取该标头的价值(只需浏览到https://<mobileservicename>.azure-mobile.net/login/<authProvider>
,输入您的凭据后,您将看到URI中编码的标头。)