避免引用危险符号名称
1.10 ID_dangerousName
弱加密、弱哈希、弱随机、不安全的协议等相关库、函数、类、宏、常量等名称不应出现在代码中。
这种危险符号名称主要来自:
- 低质量随机数生成算法,如 srand、rand 等
- 不再适用的哈希算法,如 MD2、MD4、MD5、MD6、RIPEMD 以及 SHA-1 等
- 非加密协议,如 HTTP、FTP 等
- 低版本的传输层安全协议,如 TLSv1.2 之前的版本
- 弱加密算法,如 DES、3DES 等
示例:
#include <openssl/md5.h> // Non-compliant, obsolete hash algorithm
const string myUrl = "http://foo/bar"; // Non-compliant, use https instead
void foo() {
MD5_CTX c; // Non-compliant
MD5_Init(&c); // Non-compliant, obsolete hash algorithm
....
}
void bar() {
srand(0); // Non-compliant, unsafe random seed
EVP_des_ecb(); // Non-compliant, unsafe encryption algorithm
....
}