【发布时间】:2018-07-09 15:28:34
【问题描述】:
专门针对为 Web 编译的 Unity 游戏。
由于 Unity 的 Web 导出器以 HTML5 为目标,这是否使其容易受到 XSS 攻击。假设有一个多人游戏,用户可以在其中输入和保存将被游戏中所有玩家查看的文本。恶意用户是否能够注入一些 javascript,然后在所有运行游戏的客户端中执行可以看到输入的文本?
【问题讨论】:
-
XSS 只有在您加载带有未经处理的用户输入的 HTML 模板并将生成的 HTML 发送给客户端时才可能发生。如果用户输入只是被渲染而不被执行,那么应该没有任何问题。请记住,在这个意义上,浏览器 执行 HTML,但浏览器不能“执行”通过 WebGL 呈现的内容。只是不要做一些愚蠢的事情,比如将未经处理的用户输入注入 WebGL 着色器。
-
这个问题与 WebGL 完全无关。发问者使用 Unity 极差的命名选择来支持 Unity 导出到 HTML5 的功能,因此几乎所有关于该导出路径的问题都在 SO 上被错误标记,并且发问者不知道他们的术语是错误的。从 Unity 导出到 HTML5 的游戏的 XSS 问题与任何其他 HTML5 页面没有什么不同。不多也不少。
-
@gman 感谢您的澄清,据我所知,Unity 的网页游戏是建立在 WebGL 之上的,您认为我的问题更侧重于统一是正确的。我将编辑问题以澄清这一点。
-
Unity 的网页游戏是在 HTML5 之上构建的。 Unity 错误地称为 tbat WebGL。 Unity 网页游戏使用 HTML5 的特性,包括 Web Audio、Web Assembly、GamePad API、JavaScript、Fullscreen API、Pointer Lock API、Blob API、XMLHTTPRequest API、WebGL API 和其他 API 都是 HTML5 的一部分。如果 Unity 实际导出到 WebGL,则它无法加载文件、播放声音,也无法从鼠标、键盘、触摸屏、游戏手柄等获取用户输入,因为 WebGL 不执行这些操作
标签: javascript html xss unity-webgl