保护HTTP请求不被其他人调用

时间:2010-06-18 10:42:53

标签: php android http httprequest

我有一个Android应用程序,我想从中将一些数据上传到我的Web服务器上的数据库。由于MySql java库的大小约为5 MB,我不想将它包含在应用程序中。 因此,我将为php脚本发出HTTP请求,并使用URL作为参数发送数据。我如何确保只有我可以打电话给这个?我不希望人们嗅到URL并在我的应用程序之外调用它。

由于

3 个答案:

答案 0 :(得分:2)

使用简单的静态令牌来识别客户端是您自己还是以先进的方式,首先使用用户名/密码进行身份验证,生成令牌并使用此令牌进行进一步的交易。此令牌可能会在一段时间后过期。

选项1:http://[your请求网址& key = xyz 只有你知道xyz

选项2:首先使用用户名密码ping服务器并在成功验证后获取动态令牌[dKey],将其存储在本地。 然后是进一步的要求。 http://[your请求网址& key = dKey。

选项2是通常被遵循的选项。

答案 1 :(得分:1)

简短的回答:你无法阻止嗅探。

但是你可以通过实现某种内部身份验证,GET / POST预定义参数(或动态,但通过算法计算,你只知道如何)交换,隐藏标题字段等来使嗅探者的生活更加艰难。

但所有这些也可以被嗅探/逆向工程。

可能的Overkill Way将使用某种非对称的私钥/公钥加密/签名。比如RSA。您的应用只会包含公钥,并使用它对请求数据进行签名。并且您的服务器端将拥有一个秘密私钥,它将使用它来检查客户端请求的有效性。

答案 2 :(得分:0)

我对android知之甚少 - 但这与问题无关。

如果您想阻止某人嗅探URL(以及身份验证详细信息?),那么唯一的选择就是使用SSL。另一方面,如果您只是想阻止其他人访问该URL,那么它只是一个身份验证问题。如果您不使用SSL,那么这意味着您需要使用会话和基于质询的身份验证来避免人们嗅探流量。您可以通过摘要式身份验证或滚动自己的代码来完成此操作。

下进行。