我正在尝试针对安全漏洞运行 fortify 代码检查器,它正在标记一些我使用 setTimeout 的实例以及来自标准 3rd 方代码库的一些实例。不知道如何修复它们。
我的 JS 文件
var hasHash = document.location.hash;
if (hasHash) {
if ($.browser.msie) {
setTimeout(function () {
MOM.utils.scrollTo(MOM.$window.scrollTop() - 60);
}, 1000);
}
else {
MOM.utils.scrollTo(MOM.$window.scrollTop() - 60);
}
}
文件 all.js 将未经验证的用户输入解释为第 7982 行的源代码。在运行时解释用户控制的指令可以让攻击者执行恶意代码。
第 1 行和第 4 行的标志(setTimeout)
bootstrap.editable.js中的超时功能,我用它来实现某些表单字段的内联编辑。
if(this.options.highlight) {
var $e = this.$element,
bgColor = $e.css('background-color');
$e.css('background-color', this.options.highlight);
setTimeout(function(){
if(bgColor === 'transparent') {
bgColor = '';
}
$e.css('background-color', bgColor);
$e.addClass('editable-bg-transition');
setTimeout(function(){
$e.removeClass('editable-bg-transition');
}, 1700);
}, 10);
}
selectivizr.js 中的 setInterval 函数
if (enabledWatchers.length > 0) {
setInterval( function() {
for (var c = 0, cl = enabledWatchers.length; c < cl; c++) {
var e = enabledWatchers[c];
if (e.disabled !== e.$disabled) {
if (e.disabled) {
e.disabled = false;
e.$disabled = true;
e.disabled = true;
}
else {
e.$disabled = e.disabled;
}
}
}
},250)
}
在所有 3 个文件上都出现同样的错误。不确定如何替换这些 JS 命令或如何处理 3rd 方库。处理这些安全漏洞的好方法是什么。