CodeQL 文档

空值或未定义的属性访问

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

点击查看 CodeQL 代码库中的查询

尝试读取或写入 nullundefined 的属性将在运行时导致异常。

建议

仔细检查相关的属性访问。如果问题在测试期间未被发现,可能是因为它位于死代码中,或者没有被测试覆盖。如果是前者,请删除相关的死代码。如果是后者,请考虑添加新的测试。

示例

在以下示例中,函数 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;
}

参考资料

  • ©GitHub, Inc.
  • 条款
  • 隐私