JavaScript文件中反映的XSS跨站点脚本

时间:2018-10-03 10:18:25

标签: javascript java jsp xss cross-site

我的JS文件具有以下代码

function changeLanguage(newLang) {
    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;  //here is the issue


}

通过HP Fortify Tool扫描代码时,我在突出显示的行遇到XSS跨站点脚本问题。

我在这里可以做什么,以便HP Fortify不会将其视为漏洞?预先感谢

1 个答案:

答案 0 :(得分:3)

使用location.assign分配位置。它会在分配脚本之前将脚本的来源与所需的网址进行比较。
从上面的链接:

  

如果由于违反安全性而无法进行分配,则会抛出DOMException类型的SECURITY_ERROR。如果调用该方法的脚本的来源与Location对象最初描述的页面的来源不同,那么通常会发生这种情况,主要是在脚本托管在其他域上时。

您还可以使用location.replace阻止当前页面保存在会话历史记录中。