我正在开发Android和iOS游戏,我需要调用php页面来收集数据并将数据输入到数据库mysql中。
发送和接收数据工作正常,问题是发送的数据未加密,但我可以使用ssl证书解决它,以便将所有数据发送加密。
另一个问题是,通过一些适当的程序(例如:Charles Proxy),您可以看到指向我的php文件的地址,因此您可以一遍又一遍地重新提交数据包。
例如:
这是我的test.php:
$code = $_POST['SecretCode'];
if($code == "secretcode")
{
// Connect to DB and increment 'i' value
}
这是我在Unity3D中的C#代码:
public IEnumerator test()
{
WWWForm form = new WWWForm();
form.AddField("SecretCode", secretcode);
WWW www = new WWW("http://sitename.com/test.php", form);
yield return www;
if(www.text != "")
{
// Returned value
}
}
现在,如果从我的游戏中调用'test()'函数,php会调用安全代码,如果正确,则会增加数据库中的变量。
当游戏发送此请求时,Charles Proxy可以看到请求,因此我可以与Charles无休止地重新发送请求,无休止地增加数据库中的值。
为了让你更好地理解,我会给你看一张总结的图片:
http://postimg.org/image/x3owvt5il/
最后有一种方法可以隐藏php文件或让它看起来未知? 或者如果有人试图重复这些请求,只是不要更改数据库上的值?
答案 0 :(得分:0)
解决方案:我找到了解决方案!我在客户端和服务器之间的连接领域不太实用。为了保护客户端和服务器之间的通信,只需使用HTTPS协议,因此除了已经加密的数据之外,您还具有加密通信,以便没有人可以看到您的URL并且无法创建无尽的包请求你以前发过的。