-
使用RAII(Resource Acquisition Is Initialization)技术,如智能指针和容器类,以自动化内存管理;
-
避免缓冲区溢出,使用字符串操作函数(如strcpy_s和strncpy_s)代替不安全的函数(如strcpy和strcat);
-
针对指针操作时进行安全边界检查,确保不会访问越界内存。
不正确的输入验证和过滤是许多开发安全问题的根源之一。下面是一些建议:
-
对所有用户输入信息进行验证和过滤,包括命令行参数、环境变量、文件和网络输入等;
-
使用正则表达式等对输入进行验证,或者是特定的数据类型转换函数(如stoi和stof);
-
对输入信息进行充分的边界检查并拒绝不符合要求的输入。
-
避免使用动态构建SQL查询语句,可使用参数化查询或预编译语句;
-
禁止使用System函数或任何可以执行外部命令的函数,以防止命令注入;
-
始终对外部输入进行正确的验证和过滤,特别是在执行动态代码之前。
保护敏感信息的安全性是至关重要的。以下是一些建议来加密和哈希处理数据:
-
使用正确的加密算法保护敏感数据,如AES(高级加密标准)或RSA(非对称加密);
-
使用安全的哈希函数(如SHA-256)保护密码和敏感信息;
-
避免在代码或配置文件中明文存储敏感数据,使用安全的密钥存储和访问机制。
确保只有授权用户可以访问和执行特定操作是保护应用程序安全的关键。以下是一些建议来进行访问控制:
-
实施恰当的用户身份验证和授权机制,如使用密码、令牌或多因素身份验证;
-
设置正确的文件和目录权限,以限制未授权用户的访问内容;
-
使用最小权限原则,即只授予用户完成工作所需的最低权限。
原文始发于微信公众号(网安培训):CISAW安全软件|| C++与安全编程:编写安全的C++代码,预防常见的安全漏洞
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论