2012-01-15 37 views
2

我认为这有点难以解释。基本上,我有一个连接到Web应用程序的Android应用程序。我想要从网络应用程序制作的请求,而不是在其他地方制作。顺便说一句,我使用PHP。因此,如果说,我从一个名为“send_data.php?foo = bar”的android应用发出请求,我希望该请求不起作用,除非它确实从android应用单独发送。所以我不能去我的浏览器并键入“send_data.php?foo = bar”,它会起作用。如何只能从应用程序发送请求

我想到了一种方法,那就是在我的请求中有一个秘密值,例如“pw = 12345”,然后在PHP脚本中有if($pw = "12345"),但后来我发现有人可以用数据包嗅探他们的手机,轻松获得那个秘密价值。有什么办法可以做到这一点?

+1

使用ssl(https)将数据从android应用程序发送到Web应用程序。 – Erik 2012-01-15 03:28:53

回答

0

卡西姆,你可以做到这一点

的一种方法是使用一个职位,而不是获取变量,然后访问该链接为SSL链接。这样做会确保发布的信息被加密。如果你做不到,你可以像我一样做。我加密了我发送到服务器上的电话的数据。它在手机上保持加密状态,只有在应用程序中使用时才会解密。这样,如果有人嗅探我的连接并获取数据,这并不重要。这几乎是无用的。希望这可以帮助。

+0

但我怎么加密它?我将使用哪种方法来加密数据,但是可逆(可解密)? – Qasim 2012-01-15 03:38:06

+0

只要密钥存储在服务器和手机上,并且没有传输,就可以很好地防止嗅探,您可以使用任意数量的加密方法。我用我的DES(不是最安全的,但足够我)。 PHP页面在通过HTTPS以JSON格式发送数据之前加密数据。手机接受数据并将其存储在数据库中。稍后,当应用程序需要使用这些数据时,它会对其进行解密。就像核磁共振说,关键可以在你的来源找到足够的工作。诀窍是尽可能使用Proguard之类的代码来模糊你的代码。 – 2012-01-15 13:25:59

0

没有完美的答案。我会让网站发送一个用于加密数据的密钥,但即使如此,也可能会被打败。

1

我不认为这可以以密码安全的方式完成。手机应用程序本身是公开数据,因此存储在应用程序内的任何密钥最终都可以被窥探。

这就是说,你可以去合理的长度混淆密钥,以加密格式存储它,隐藏它在哪里,等等。这可能足以威慑你的目的。但重要的是要知道,这只是壳牌游戏,应用程序中的键是不安全的,并且一个有动力的攻击者最终会提取它。

您可能考虑的另一种方法是让用户进行身份验证,然后您就可以知道谁正在连接,并且可以将服务器响应作为基础。用户身份验证的密码强大。

0

似乎您对请求身份验证感到疑惑,也担心有人在传输过程中嗅探数据。使用https是减轻所有风险的唯一方法。请参阅this question的接受答案。答案中提供的博客链接值得一读。

相关问题