我有一个JavaScript文件 script.js ,其中包含以下代码
var winLoc = String(this.window.location);
var pos = winLoc.indexOf("lang=");
var spacer = '?';
if(pos >0) {
var curLang = winLoc.substring(pos+5,pos+7);
winLoc = winLoc.replace('lang=' + curLang, 'lang='+newLang);
} else {
if(winLoc.indexOf("?") > 0) {
spacer = '&';
}
winLoc = winLoc + spacer + 'lang=' + newLang;
}
this.window.location = winLoc; //cross site scripting issue//
我必须为变量winLoc添加此Java代码
winLoc = ESAPI.encoder().encodeForHTML(winLoc);
,并且这个encoder()方法位于 ESAPI jar 中,我也需要添加
我正在使用它来避免反映XSS跨站点脚本。
请帮助我将此Java代码添加到JS文件或您想到的任何替代方法吗?
答案 0 :(得分:0)
好吧,我不知道您打算做什么,但是通常来说,您无法在JavaScript中执行Java代码。
Javascript是客户端,这意味着它由用户浏览器解释,而Java被编译为字节码并由JVM在服务器端执行。
但是,您可以在一个元素中运行JSP,但是它必须返回有效的JS。
答案 1 :(得分:0)
您必须改为使用JavaScript基础工具。看一下DOMPurify或jquery编码器之类的东西。
对于您所要求的特定上下文,HTML转义看起来是错误的。您可能改为使用encodeURIComponent。