我正在编写一个手机游戏,用户将他的高分发送到 PHP 服务器。
我想在服务器中验证 HTTP 请求仅来自移动设备。我想拒绝恶意用户可能通过 curl 或其他带有虚假分数的 HTTP 客户端发送的呼叫。
这样做的标准,通常的方法是什么?
我认为我可以在移动客户端中加密 HTTP 消息,但随后我需要使用加密密钥发布二进制文件,如果反编译可以检索该二进制文件。
谢谢你。
我正在编写一个手机游戏,用户将他的高分发送到 PHP 服务器。
我想在服务器中验证 HTTP 请求仅来自移动设备。我想拒绝恶意用户可能通过 curl 或其他带有虚假分数的 HTTP 客户端发送的呼叫。
这样做的标准,通常的方法是什么?
我认为我可以在移动客户端中加密 HTTP 消息,但随后我需要使用加密密钥发布二进制文件,如果反编译可以检索该二进制文件。
谢谢你。
看看这个:
https://github.com/serbanghita/Mobile-Detect
它非常准确,但是它不会阻止伪造用户代理的客户。
然而,通常最好的方法是不要让客户做出任何决定。
以 Eve Online 之类的游戏为例。您所做的每个操作都作为用户操作发送到服务器,然后服务器验证该操作并做出适当的决定。如果服务器依靠客户端来决定一艘船正在造成多少伤害,那么游戏将受到无休止的教练黑客攻击。
您可以使用 JavaScript 获取有关用户客户端的信息,例如浏览器代码名称、浏览器名称、浏览器版本、平台、用户代理标头、用户代理语言等。
那里可能有可行的库(可能像 Flosculu 提到的那样)可以帮助您进行移动专用检测,但是您必须了解所有这些信息无论如何都可以被操纵,这主要取决于您如何传输数据,所以也许您不应过度考虑这一点,而应专注于安全的数据传输方法。
不过,快速搜索指向了这个移动检测脚本。
但是再次......你不能依赖这样的东西,但如果它不是太耗时,那么如果它让你感觉更好,那么一定要在脚本中添加另一个验证:)