Java 如何只能从应用发送请求

Java 如何只能从应用发送请求,java,php,android,httpwebrequest,Java,Php,Android,Httpwebrequest,我觉得这有点难以解释。基本上,我有一个android应用程序,可以连接到web应用程序。我希望我从web应用程序发出的请求不会在其他任何地方发出。顺便说一下,我正在使用PHP。因此,如果比方说,我从一个名为“send_data.php?foo=bar”的android应用程序发出请求,我希望该请求不起作用,除非它确实是单独从android应用程序发出的。所以我不能直接进入我的浏览器,输入“send_data.php?foo=bar”就行了 我想到了一种方法,那就是在我的请求中有一个秘密值,比如“

我觉得这有点难以解释。基本上,我有一个android应用程序,可以连接到web应用程序。我希望我从web应用程序发出的请求不会在其他任何地方发出。顺便说一下,我正在使用PHP。因此,如果比方说,我从一个名为“send_data.php?foo=bar”的android应用程序发出请求,我希望该请求不起作用,除非它确实是单独从android应用程序发出的。所以我不能直接进入我的浏览器,输入“send_data.php?foo=bar”就行了

我想到了一种方法,那就是在我的请求中有一个秘密值,比如“pw=12345”,然后在PHP脚本中,有
if($pw=“12345”)
,但后来我想有人可以对他们的手机进行数据包嗅探,很容易得到这个秘密值。我有什么办法可以做到这一点吗?

Qasim


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

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

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

也就是说,你可以用合理的长度来混淆密钥,以加密的格式存储密钥,隐藏密钥所在的位置,等等。这对于你的目的来说可能是足够的威慑。但重要的是要知道,这一切都只是空壳游戏,应用程序中的密钥是不安全的,有动机的攻击者最终会将其提取出来


您可能考虑的另一个方法是让用户进行身份验证,然后您可以知道谁正在连接,并且可以基于此建立服务器响应。用户身份验证在加密方面非常强大。

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

使用ssl(https)将数据从android应用程序发送到web应用程序。但是我该如何加密它?我将使用什么方法对数据进行加密,但也是可逆的(可解密的)?只要密钥存储在服务器和手机上且未传输,就可以使用任意数量的加密方法。它可以很好地防止嗅探。我用DES(不是最安全的,但对我来说已经足够了)。PHP页面在以JSON格式通过HTTPS发送数据之前对数据进行加密。手机接受数据并将其加密存储在数据库中。稍后,当应用程序需要使用数据时,它会对数据进行解密。就像核磁共振仪所说的,只要做足够的工作,就可以在源代码中找到密钥。诀窍是使用Proguard之类的工具来混淆代码,使其尽可能安全。