javascript - 服务器端从html页面(不是jsp)输出编码以防止XSS

标签 javascript encoding xss server-side

我的应用程序存在由未经验证的 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/

相关文章:

tinymce - htmlPurifier 不适用于 TinyMCE

javascript - 如何正确应对Chrome X-XSS-Protection?

javascript - 上传前如何操作内存中的文件流

c++ - 为什么 std::string s ("??<") 输出 { 而不是预期的 ??< ?

c# - 比较通过 NetworkStream 发送到服务器/从服务器发送的值

html - 为什么 & 变成 &

security - 是否可以对查询字符串进行 XSS 攻击?

javascript - 关于 Javascript 中的匿名函数

javascript - 取消选择特定 div 内除选中的复选框之外的所有复选框

javascript - 如何更新没有特定类型的 Angular 管