CodeQL 文档

禁用证书验证

ID: js/disabling-certificate-validation
Kind: problem
Security severity: 7.5
Severity: error
Precision: very-high
Tags:
   - security
   - external/cwe/cwe-295
   - external/cwe/cwe-297
Query suites:
   - javascript-code-scanning.qls
   - javascript-security-extended.qls
   - javascript-security-and-quality.qls

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

证书验证是安全 TLS 连接的标准身份验证方法。没有它,就无法保证 TLS 连接的另一方是谁,从而使中间人攻击更容易发生。

在测试使用 TLS 连接的软件时,暂时禁用证书验证可能很有用。但是,强烈建议不要在生产环境中禁用它,除非使用其他身份验证方法。

建议

不要禁用 TLS 连接的证书验证。

示例

以下示例显示了一个 HTTPS 连接,该连接将机密信息传输到远程服务器。但连接不安全,因为连接的rejectUnauthorized 选项被设置为false。因此,任何人都可以冒充远程服务器并接收机密信息。

let https = require("https");

https.request(
  {
    hostname: "secure.my-online-bank.com",
    port: 443,
    method: "POST",
    path: "send-confidential-information",
    rejectUnauthorized: false // BAD
  },
  response => {
    // ... communicate with secure.my-online-bank.com
  }
);

为了使连接安全,rejectUnauthorized 选项应具有其默认值,或者显式设置为true

参考资料

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