【发布时间】:2012-07-13 08:48:34
【问题描述】:
我想限制对我服务器上的 PHP 文件的访问。此 PHP 文件从 HTTP GET 请求中获取数据并将其附加到文件中。简单的。但我不希望执行这个 PHP 文件,除非 HTTP 请求是从我开发的智能手机应用程序中生成的。
我不想单独验证每个用户。我希望我的应用程序,并且只有我的应用程序能够将请求发送到 PHP 文件。我不希望人们在浏览器中输入类似格式的请求 (http://www.mydomain.com/check.php?string=blahblahblah) 并产生相同的影响。
我考虑过检查 HTTP_USER_AGENT 或其他一些变量,但我担心它们也很容易被欺骗。我可以将一个密钥嵌入到我要查找的应用程序中,但该密钥也可能被泄露。
下一步是让服务器向我发送一个质询,我会做出适当的回应。或者我什至可以研究 PKI。但是,考虑到我并不想保护任何真正有价值的东西,而只是为了防止轻微的破坏,有什么相对简单的方法来做到这一点。
我想在这里重新发明轮子吗?是否已经有一种简单且经过验证的方法可以做到这一点?
【问题讨论】:
-
根据您所做的事情的本质,没有 100% 万无一失的方法可以做到这一点。我能想到的最安全的事情是为您的移动应用程序的每个实例生成一个唯一密钥,在数据库中存储一个密钥列表 - > IMEI 关系以验证请求(显然包含此信息,最好以某种方式加密) 并通过 HTTPS 执行来自您的应用的所有请求。但即使这样,如果有人设法获得手机的密钥和 IMEI 对,它也将是欺骗性的。
-
这个话题应该回答你的问题:stackoverflow.com/questions/2182936/…
-
如果您想阻止自动机器人用垃圾淹没您的服务器,您可以将 PHP 脚本设置为在每次请求后休眠 30 秒。如果手机应用不需要响应(您可以使用 cURL 发送非阻塞请求),它会使机器人攻击变得冗长乏味,并且很容易通过 ip 发现和阻止。