Java 防止用户提供的链接中包含XSS攻击的正确方法是什么?
我正在尝试修复一个网站上的XSS问题,在这个网站上,用户提供的链接被发送到服务器端,然后被呈现回网页。在攻击者的链接将关闭HTML标记的情况下,可以执行XSS攻击,方法是在HTML标记的末尾附加如下内容:Java 防止用户提供的链接中包含XSS攻击的正确方法是什么?,java,security,xss,owasp,Java,Security,Xss,Owasp,我正在尝试修复一个网站上的XSS问题,在这个网站上,用户提供的链接被发送到服务器端,然后被呈现回网页。在攻击者的链接将关闭HTML标记的情况下,可以执行XSS攻击,方法是在HTML标记的末尾附加如下内容: “/>顾名思义,HTML清理程序旨在清理HTML内容(尤其是生成的正文内容、javascript等)。也就是说,如果您将清理过的字符串放入HTML页面,它将完美工作 请尝试以下方法: <html> <body> <a href="https://www.
“/>顾名思义,HTML清理程序旨在清理HTML内容(尤其是生成的正文内容、javascript等)。也就是说,如果您将清理过的字符串放入HTML页面,它将完美工作
请尝试以下方法:
<html>
<body>
<a href="https://www.google.com/search?client=firefox-b-d&q=xss+encoding+url">
Click here.
<a/>
</body>
</html>
点击这里。
点击经过消毒的链接确实会引导你进入你想要的谷歌搜索
如OWASP所述
积极的XSS预防模式
(…)将HTML页面视为
一个模板,带有允许开发人员放置不受信任文件的插槽
数据。这些插槽覆盖了
开发人员可能希望放入不受信任的数据。将不受信任的数据放入
HTML中的其他位置是不允许的。这是一个“白名单”模型,
这否定了一切不被特别允许的东西
给定浏览器解析HTML的方式,每个不同类型的
插槽的安全规则略有不同。当您放置不受信任的
将数据放入这些插槽中,需要采取某些步骤以确保
数据不会从该插槽中断到
允许代码执行。在某种程度上,这种方法处理HTML文档
与参数化数据库查询一样,数据保存在特定的数据库中
放置并通过转义与代码上下文隔离
您的消毒剂旨在使这些插槽成为“更安全”的地方。我已经完全回答了您的问题吗?如果是,您介意“接受”吗“答案是什么?@bsaverino非常感谢你的回答,我只是绕着它转了转,然后测试了一下。因此,当编码字符放在标记href属性中时,它看起来好像被删除了?是的,经过净化的输出将由HTML解释。所以正确的解码确实发生了。谢谢。很高兴我能帮忙。