我必须在JavaScript文件中添加Java代码

时间:2018-09-27 10:54:51

标签: javascript java jsp xss cross-site

我有一个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文件或您想到的任何替代方法吗?

2 个答案:

答案 0 :(得分:0)

好吧,我不知道您打算做什么,但是通常来说,您无法在JavaScript中执行Java代码。

Javascript是客户端,这意味着它由用户浏览器解释,而Java被编译为字节码并由JVM在服务器端执行。

但是,您可以在一个元素中运行JSP,但是它必须返回有效的JS。

  

https://www.javatpoint.com/jsp-expression-tag

答案 1 :(得分:0)

您必须改为使用JavaScript基础工具。看一下DOMPurify或jquery编码器之类的东西。

对于您所要求的特定上下文,HTML转义看起来是错误的。您可能改为使用encodeURIComponent。