如何只能从应用程序发送请求

时间:2012-01-15 03:14:45

标签: java php android httpwebrequest

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

我想到了一种方法,那就是在我的请求中有一个秘密值,如“pw = 12345”,然后在PHP脚本中,有if($pw = "12345"),但后来我想有人可以打包嗅他们的手机很容易获得这个秘密价值。有什么办法可以实现这个目标吗?

4 个答案:

答案 0 :(得分:1)

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

这就是说你可以花费合理的篇幅来混淆密钥,以加密的格式存储它,隐藏它的位置等等。这可能足以威慑你的目的。但重要的是要知道它只是贝壳游戏,应用程序中的密钥是不安全的,并且有动力的攻击者最终会提取它。

您可能考虑的另一种方法是让用户进行身份验证,然后您就可以知道谁在进行连接,您可以根据需要建立服务器响应。用户身份验证在加密方面非常强大。

答案 1 :(得分:0)

卡西姆,

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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