C++安全指南
c++编程习惯
- switch中应有default
- 不应在debug或错误信息中提供过多内容
- 不应该在客户端代码中硬编码对称加密秘钥
1 // Bad
2 char g_aes_key[] = {...};
3 void Foo() {
4 ....
5 AES_func(g_aes_key, input_data, output_data);
6 }
1 // Good
2 char* g_aes_key;
3 void Foo() {
4 ....
5 AES_encrypt(g_aes_key, input_data, output_data);
6 }
7 void Init() {
8 g_aes_key = get_key_from_https(user_id, ...);
9 }
- 函数不可以返回栈上的变量的地址,而应当使用堆来传递非简单类型变量,强烈建议返回 string、vector 等类型。
1 // Bad
2 char* Foo(char* …