2011-09-03 59 views
0

我有一个Android应用程序,从我的PHP/MySQL网络服务器获取数据。 数据本身并不敏感,如果POI是数字的地理数据 - 但对其他人使用/滥用可能有用。如何限制只有我的Android应用程序访问我的网站

目前,我的应用程序将通过沿线的做成才获取数据: http://myserver.url.com/data.php?getinfo=a_zip_code

返回的任何数据都将作为XML返回。我不想要的是某人能够通过提出自己的数据请求来滥用系统。

我propsal是基于MD5(用户名+日期+盐)

一键发送GET请求:

http://myserver.url.com/data.php? 
getinfo=a_zip_code&username=$username&key=AABBCCDDEEFFAABBCCDDEEFF 

我可以再重复在服务器上的进程,如果这两个散列匹配 - 然后我可以返回数据。

  • 用户名 - 用于查找用户数据库
  • 日期 - 改变日常
  • 盐的关键 - 停止任何人产生的关键。

是做我想达到的一种好方法还是有其他更适合的方法?

回答

0

我认为作为一个关键,你可以只使用一个已知的变量 - 没有md5。将其发布到您的脚本并获得结果。另一种方式是发布你的Android设备个人号码并将其定义到你的Php脚本中。

+0

使用前一种方法将意味着,如果变量变得已知,那么任何人都可以获得访问权限。通过使用散列 - 嗅探密钥的有用性仅在一段时间内有效。 (我甚至可以改变日期而不是时间)。施虐者不知道哈希如何组成。 – Nigma

0

我觉得你发布的方法是足够的。但是,像所有的安全问题一样,这都是相对于你所需要的安全性而言的。我遇到过类似的情况,因为我的Web服务器会返回JSON数据,然后我的应用程序会解析这些数据。再次,没有任何敏感的东西,但只是我不希望任何人使用的东西。请注意,针对像我们这样的问题存在相当多的解决方案。您也可以拥有它,以便您的应用程序在访问任何数据之前“登录”到您的网站。或者你可以设置某种令牌系统。这取决于你,但似乎你有一个坚实的想法。

+0

或者我应该说你对于你面临的问题有一个“足够坚实”的想法。再说一遍,这都是相对的。 – Vinay

0

首先,确保您使用的是HTTPS。其次,不要依赖你的密钥是完全秘密的。可以对APK进行反编译,并且可以轻松发现密钥(字符串)。

相关问题