是否可以验证表单帖子是否来自Unity?例如,我有一个表单(顺便使用Codeigniter)登录用户。我要确保POST数据来自WebGL Unity构建,并且不能通过进入表单页面直接访问。>
这是一回事吗?
答案 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。