将表单POST仅限于Unity

时间:2018-08-26 03:49:56

标签: php unity3d

是否可以验证表单帖子是否来自Unity?例如,我有一个表单(顺便使用Codeigniter)登录用户。我要确保POST数据来自WebGL Unity构建,并且不能通过进入表单页面直接访问。

这是一回事吗?

1 个答案:

答案 0 :(得分:3)

这的答案实际上取决于您想要的方式。

  

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

您可以使用标头将“用户代理”设置为“ 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。