我正在研究WP7应用程序。这个WP7应用程序将与我创建的一些Web服务进行交互。我不希望其他应用程序与这些Web服务交互。原因是因为我不希望他们窃取我的数据。考虑到这一点,这就是我目前正在做的事情:
目前,我没有看到阻止恶意开发人员创建用户名/密码组合并在其应用程序中使用该帐户与我的Web服务进行交互的原因。我如何真正锁定这件事?
谢谢!
答案 0 :(得分:1)
作为一个更安全的系统的开始,您应该停止存储密码并通过线路发送每个请求(即使您使用的是SSL)。
如果您必须在每次请求时传递它,请存储密码的盐渍哈希并改为使用。
答案 1 :(得分:1)
我正在使用多层方法来解决这个问题。我建议创造性地思考并使用各种方法来验证请求来自您希望来自的设备。
或者,如果您的方案中有任何优点,请向第三方开发人员打开api,并使其朝着您的目标努力。
答案 2 :(得分:1)
如果您决定在应用程序中存储密钥,请不要存储RAW文本,而是声明UTF8值的字节数组,这不会那么容易阅读。
然后,您可以在第一次运行应用时使用密钥的盐渍哈希与您的服务握手,该服务会发出另一个密钥,以便设备实际日常使用。
手机应该有几乎准确的时间,因此您可以每天或每小时重新计算密钥。您也可以在服务器端撤销该设备的密钥。
此API可用于确保您可以永久将设备列入黑名单。
DeviceExtendedProperties.GetValue(“DeviceUniqueId”)ToByte();
我甚至没有考虑过对称加密,甚至可以将上述唯一ID用作私钥。
我认为成功的关键在于第一次握手,并确保不被窥探。如果它是一个非常重要的系统,那么不要使用任何这些想法,因为滚动自己的加密对任何有严肃意图的人来说总是很脆弱 - 使用众所周知的方法并阅读。
路
答案 3 :(得分:0)
您可以引入“授权应用程序ID”功能,其中应用程序在每个HTTP请求正文中发送其名称或标识符。然后在服务器端,您可以验证应用程序的身份(例如,将授权的应用程序ID存储在表中)。应用程序ID将在HTTP(S)主体内加密。
如果您想要删除旧的应用程序ID,这也可以让您选择在WP7应用程序的更新版本中推出新的应用程序ID。您还可以在将来支持差异设备或平台上的新应用程序。
答案 4 :(得分:0)