2012-07-25 131 views
2

我在MonoDroid的/ MonoTouch的制作跨平台应用程序,和我的应用程序应该与服务器端的部分接触,以从中获取数据。数据是敏感的,并且是应用程序的基础。限制访问服务器后端

我将如何保卫它限制从其他人/应用程序的服务器端的使用,假设人们可以得到正确的请求语法还是我我的编码与密钥询问他们可以通过调试拿到钥匙。

回答

3

你需要保密在你的数据传输,例如使用SSL/TLS,就像HTTPS一样,但仅此一项就不够。默认情况下,这意味着客户端可以确保它信任服务器,而不是服务器可以信任客户端(并且不包括您的调试情况)。

所以你需要认证为好。这与秘密密钥几乎完全相同,只不过它必须是用户(或您信任的实体),而不是硬编码为的应用程序本身(即不可信)。

具有用户注册并获取密码(或保存到设备存储用户令牌)是启动的方式之一。它会使用您的数据保护您的其他人。

您可以通过创建某种用户/设备协会加强这使得用户秘密不能跨越多个设备共享......这可能会限制使用替代(不受信任的)应用程序的可能性相同(可信)用户,例如在不同的设备上。

+0

但人们可以通过电话注册,然后只需更换他们的环境变量,就像手机一样。 – elgato 2012-07-25 13:57:10

+0

您说*限制服务器端从**其他**人/应用程序*的使用 - 强调**其他**人。如果你不信任你的用户,那么你进入DRM领域,恕我直言,IMHA根本行不通 - 你可以很难做到,但在失败之前,这只是一个时间问题。督察你不能建立一个受信任的连接(你的数据传输),除非有你在两端相信的东西(无论是硬件,应用程序或用户) – poupou 2012-07-25 14:07:43

+0

比poupou提到什么其他的,也有一些是你可以考虑:1 。您可以生成UUID以及您想要生成的任何内容以识别设备上的应用程序并将其传递给服务器。对于基于Web服务的应用程序,您甚至可以将它们和它们的登录名作为每个Web服务调用的参数传递,以便您确切知道每次调用的来源。 2.在服务器端,在数据库中,保持跟踪登录和设备UUID,将它们分开并相应地标记它们。您可以添加服务器端逻辑来监视并从那里执行任何您想要的操作。 – 2012-07-25 14:32:46