空值或未定义的属性访问¶
ID: js/property-access-on-non-object
Kind: problem
Security severity:
Severity: error
Precision: high
Tags:
- correctness
- external/cwe/cwe-476
Query suites:
- javascript-security-and-quality.qls
尝试读取或写入 null
或 undefined
的属性将在运行时导致异常。
建议¶
仔细检查相关的属性访问。如果问题在测试期间未被发现,可能是因为它位于死代码中,或者没有被测试覆盖。如果是前者,请删除相关的死代码。如果是后者,请考虑添加新的测试。
示例¶
在以下示例中,函数 f
声明了一个变量 result
,然后调用另一个函数 computeInterestingResult
(未显示)并将结果存储在 res
中,最后返回 result.value
。由于 result
未被初始化,它将仍然具有其默认值 undefined
,从而导致运行时异常。
function f() {
var result;
res = computeInterestingResult();
return result.value;
}
对 res
的赋值可能是一个拼写错误;应该将其分配给 result
function f() {
var result;
result = computeInterestingResult();
return result.value;
}