我的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不会将其视为漏洞?提前致谢

最佳答案

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


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


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

09-25 23:42