3

用户将键入一个文本,然后一个按钮将具有该文本作为值。用户可以进行 XSS 注入吗?我应该清理输入吗?如果是怎么办?

这有点会发生什么:http: //jsfiddle.net/5q895/

<input type="text" id="asd" />
<input type="submit" id="zxc" onclick="qwe()" />
<script>
function qwe()
{
    document.getElementById("zxc").value=document.getElementById("asd").value;
}
</script>

(是针对android的,我用JS来说明的)

4

3 回答 3

2

虽然使用 HTML 和 JavaScript,但输入的恶意文本可能会通过 Javacsript 更改您的 html 页面,但 Android 并非如此。Android 应用程序是用 Java 编程的,Java 是一种编译语言,与解释的 JavaScript 相对。因此,即使有人输入 Java 代码,该代码也会显示为 Button 的标签,但无法执行。

于 2013-09-22T14:33:52.427 回答
2

回答您关于不清理用户输入的风险的基本问题,如果该输入随后将用作按钮的文本。

简短的回答是,除了长度之外,没有任何风险可能会使按钮由于长度而从预期的布局中弹出。

于 2013-09-22T14:35:33.040 回答
0

您应该始终清理用户输入。主要有两个原因。

把你的用户想象成这样的思想实验,你把一群猴子放在一个有打字机的房间里,最终,如果有足够的时间,其中一个会写出莎士比亚写的东西。以同样的方式,最终您的用户可能(无意中)输入一些会弄乱您的系统的内容,即使它只是提交按钮。

存在会积极尝试弄乱您的系统的人。

这两者一起创建了简单的规则,always sanitize input您的系统永远不应该期望以预期格式从外部源获取输入。它应该始终通过某种过滤器进行验证。

当谈到您的问题时,我们有办法对您的系统提供很少的信息来给出任何合理的怀疑。但是,不要期望输入的任何客户端验证就足够了,因为事实并非如此。您还必须验证服务器上的数据。

于 2013-09-22T14:09:02.420 回答