我的应用程序存在由未经验证的 URL 引起的反射型 XSS 漏洞。我想至少在客户端提供输出编码。我只能修改 html 和 js 中的前端页面。我无权访问后端应用程序代码,因此无法在服务器端使用 UrlEncoder.encode 。 我的问题是如何从客户端表单调用服务器端编码。 我知道在jsp中我可以写 <@page import=org.owaps.esapi.* var url = <%=Esapi.Encoderr.encodetoUrl(vulnerableUrl) =%>
但是由于我的网页不是 jsp ,而是 html+js ,我如何调用服务器端编码函数?
最佳答案
鉴于您提供的信息,我会说不,这可能是不可能的。
假设您添加: document.forms[0].redirect.value =encodeURI(恶意网址)
现在攻击者出现并发送:
"); alert("xss")
问题在于,当客户端脚本运行时,恶意数据已经存在于页面中,并且已经更改了页面的布局和上下文。
我认为通过使用 mod_security 之类的 WAF 来限制可以进入应用程序的可能值,然后尝试在客户端修复它,可以更好地解决此问题。虽然实际上解决服务器端的问题是最好的选择。
关于javascript - 服务器端从html页面(不是jsp)输出编码以防止XSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9238670/