我的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防止当前页面保存在会话历史记录中。