首页 > 解决方案 > 仅将表单 POST 限制为 Unity

问题描述

有没有办法验证表单帖子是否来自 Unity?例如,我有一个让用户登录的表单(顺便说一下,使用 Codeigniter)。我想确保 POST 数据来自 WebGL Unity 构建,并且不能通过转到表单页面直接访问。

这是一件事,那是一件事吗?

标签: phpunity3d

解决方案


这个问题的答案真的取决于你想怎么做。

有没有办法验证表单帖子是否来自 Unity?

是的

您可以使用标头将“User-Agent”设置为“WEBGL-BUILD”或任何唯一值:

var uwr = new UnityWebRequest(url, "POST");
uwr.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer();
uwr.SetRequestHeader("User-Agent", "WEBGL-BUILD");
yield return uwr.SendWebRequest();

或使用表单发送显示请求来自 WebGL Build 的值:

WWWForm form = new WWWForm();
form.AddField("User-Agent", "WEBGL-BUILD");
UnityWebRequest uwr = UnityWebRequest.Post(url, form);
yield return uwr.SendWebRequest();

然后检查服务器上的标题或表单以查看它们是否匹配。

仅将表单 POST 限制为 Unity

没有

你不能这样做。原因是人们可以改变这一点。即使使用我上面提到的两种方法,任何人仍然可以对您的程序进行逆向工程并找出您发送到服务器的内容,然后使用任何编程语言创建一个虚假请求并将其发送到服务器。

实现我上面所说的只会使滥用您的服务器变得更加困难,但它不能完全将表单 POST 限制为仅限于 Unity。只需坚持基于令牌的身份验证。更好的是,使用 oauth2。


推荐阅读