我的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不会将其视为漏洞?预先感谢
答案 0 :(得分:3)
使用location.assign分配位置。它会在分配脚本之前将脚本的来源与所需的网址进行比较。
从上面的链接:
如果由于违反安全性而无法进行分配,则会抛出
DOMException
类型的SECURITY_ERROR
。如果调用该方法的脚本的来源与Location
对象最初描述的页面的来源不同,那么通常会发生这种情况,主要是在脚本托管在其他域上时。
您还可以使用location.replace阻止当前页面保存在会话历史记录中。