php - 仅将表单 POST 限制为 Unity
问题描述
有没有办法验证表单帖子是否来自 Unity?例如,我有一个让用户登录的表单(顺便说一下,使用 Codeigniter)。我想确保 POST 数据来自 WebGL Unity 构建,并且不能通过转到表单页面直接访问。
这是一件事,那是一件事吗?
解决方案
这个问题的答案真的取决于你想怎么做。
有没有办法验证表单帖子是否来自 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。
推荐阅读
- r - 根据 DF 中不同列的计数和百分比创建表
- git - 如何在 Git 中回滚到以前的版本?
- azure - Azure AD B2C - 登录页面被跳过
- c++ - 试图解决嵌套向量上的骑士之旅
> 但它不起作用 - coingecko - 将 Coingecko 表导入 Google 电子表格
- java - 如何使用retrofit2发送文件多部分正文?
- javascript - 将值存储在变量中
- python - 正确使用来自 tfds.load() 的 Cifar-10 数据集
- javascript - 为什么这些关于 timer(setTimeout()) 的代码,Promises 的 then() 方法是这样运行的?
- file-upload - tus如何设置文件名