下面的系列文章主要围绕《GB/T 38674—2020 信息安全技术 应用软件安全编程指南》进行讲解,该标准是2020年4月28日,由国家市场监督管理总局、国家标准化管理委员会发布,2020年11月01日开始实施。我们对该标准中一些常见的漏洞进行了梳理,大家感兴趣的话可以自己去下载下来学习一下,里面有一些最佳实践是比较好的。
本标准从程序安全和环境安全两个方面提出了提升应用安全性的编程最佳实践。其中,程序安全部分描述软件在资源使用、代码实现、安全功能方面的安全性规范,环境安全部分描述软件的安全管理配置规范。前面的文章为大家讲解了程序安全和代码安全,本文我们针对资源使用安全的资源管理和内存管理部分进行解读。
资源使用安全,主要包括:资源管理 、内存管理 、数据库管理 、文件管理 、网络传输这几部分。
【资源管理】
1.使用重要资源前进行正确初始化,并确认初始化失败后可以安全退出程序。
需要分配内存的要提前分配好,如果不够要及时提醒用户“你的内存不足”。
2.正确释放资源
(1)及时释放系统资源。
(2)禁止再次释放已经释放的资源。
(3)确保释放资源前完全清除敏感信息。
(4)确保应用软件在使用资源后恰当地执行临时文件或辅助资源的清理,避免清理环节不完整。
3.不使用已过期或已释放的资源
4.对外部资源,如下载的文件,进行完整性和发布源检测,确保外部资源的安全性。
【内存管理】
1.保持一致的内存管理约定
(1)使用同样的模式分配和释放内存。
(2)在同一个模块中,在同一个抽象层次中,分配和释放内存。
(3)分配和释放应配对。
2.谨慎操作缓冲区
(1)对缓冲区的读写操作进行边界检查,避免向指定的缓冲区外读取或者写入数据。
(2)对不可信数据进行输入和输出控制。
3.避免对同一块内存释放两次
4.已释放的内存,在再次分配前禁止写入
5.保护堆安全
6.尽量避免使用不使用不进行自变量检查的,已知存在漏洞的字符串操作函数