Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 防止用户提供的链接中包含XSS攻击的正确方法是什么?_Java_Security_Xss_Owasp - Fatal编程技术网

Java 防止用户提供的链接中包含XSS攻击的正确方法是什么?

Java 防止用户提供的链接中包含XSS攻击的正确方法是什么?,java,security,xss,owasp,Java,Security,Xss,Owasp,我正在尝试修复一个网站上的XSS问题,在这个网站上,用户提供的链接被发送到服务器端,然后被呈现回网页。在攻击者的链接将关闭HTML标记的情况下,可以执行XSS攻击,方法是在HTML标记的末尾附加如下内容: “/>顾名思义,HTML清理程序旨在清理HTML内容(尤其是生成的正文内容、javascript等)。也就是说,如果您将清理过的字符串放入HTML页面,它将完美工作 请尝试以下方法: <html> <body> <a href="https://www.

我正在尝试修复一个网站上的XSS问题,在这个网站上,用户提供的链接被发送到服务器端,然后被呈现回网页。在攻击者的链接将关闭HTML标记的情况下,可以执行XSS攻击,方法是在HTML标记的末尾附加如下内容:
“/>顾名思义,HTML清理程序旨在清理HTML内容(尤其是生成的正文内容、javascript等)。也就是说,如果您将清理过的字符串放入HTML页面,它将完美工作

请尝试以下方法:

<html>
<body>
<a href="https://www.google.com/search?client&#61;firefox-b-d&amp;q&#61;xss&#43;encoding&#43;url">
   Click here.
<a/>
</body>
</html>

点击这里。
点击经过消毒的链接确实会引导你进入你想要的谷歌搜索

如OWASP所述

积极的XSS预防模式 (…)将HTML页面视为 一个模板,带有允许开发人员放置不受信任文件的插槽 数据。这些插槽覆盖了 开发人员可能希望放入不受信任的数据。将不受信任的数据放入 HTML中的其他位置是不允许的。这是一个“白名单”模型, 这否定了一切不被特别允许的东西

给定浏览器解析HTML的方式,每个不同类型的 插槽的安全规则略有不同。当您放置不受信任的 将数据放入这些插槽中,需要采取某些步骤以确保 数据不会从该插槽中断到 允许代码执行。在某种程度上,这种方法处理HTML文档 与参数化数据库查询一样,数据保存在特定的数据库中 放置并通过转义与代码上下文隔离


您的消毒剂旨在使这些插槽成为“更安全”的地方。

我已经完全回答了您的问题吗?如果是,您介意“接受”吗“答案是什么?@bsaverino非常感谢你的回答,我只是绕着它转了转,然后测试了一下。因此,当编码字符放在标记href属性中时,它看起来好像被删除了?是的,经过净化的输出将由HTML解释。所以正确的解码确实发生了。谢谢。很高兴我能帮忙。