我有一个简单的网页,它获取查询项并将它们制作到页面中。 示例网址:
http://quir.li/player.html?media=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D0VqTwnAuHws
页面然后在页面的某处显示 URL:
<span id="sourceUrlDisplay">http://www.youtube.com/watch?v=0VqTwnAuHws</span>
我觉得这会使页面容易受到 XSS 攻击,以防页面加载的 URL 包含类似于
http://quir.li/player.html?media=<script>alert('test')</script>
我发现,将 URL 呈现为 <pre>
标签没有帮助。 是否有一个简单的解决方案,比如一个 HTML 标签,其内容实际上不被解释而只是被打印出来?
注意:这个问题有点similar to this one , 但更一般。
最佳答案
不,在 HTML 中没有这样的标签可以防止 XSS 攻击,也不可能制作一个。让我们假设有这样一个标签,比方说,<safe>
.攻击者只需要关闭它:</safe><script> malicious code </script><safe>
.
在这种特定情况下阻止 XSS 的方法是将特殊字符转义为其 URL 编码对应物,以便 http://quir.li/player.html?media=<script>alert('test')</script>
变成 http://quir.li/player.html?media=%3Cscript%3Ealert('test')%3C%2Fscript%3E
.
关于html - 避免使用像 <pre> 这样的 HTML 标签的 XSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14158252/