2

我最近在一次采访中被问到以下问题:“在编写 C 代码时实现内存安全的所有可能方法是什么?”

我回答了有关 API 的安全版本的问题。面试官说,还有更多的办法。我想问一下实现内存安全的方法列表是什么。

4

1 回答 1

1
  • 释放内存时始终使用 NULL out 指针以避免 Use-After-Free 错误和双重释放错误
  • 始终执行边界检查以避免 OOB(Out-Of-Bounds)读取和 OOB 写入漏洞
  • 尽量不要使用递归,或者只在知道你的限制时使用它,这样可以防止 Stack Exhaustion 和 Heap Exhaustion 漏洞
  • 如果您怀疑某个指针在任何时候都可能为 NULL,请在使用它之前始终检查它以避免 NULL 指针取消引用漏洞
  • 使用多线程强化机制来避免导致内存安全错误的竞争条件
  • 始终初始化指针和变量,特别是如果要在没有事先赋值的情况下使用/访问它们
  • 始终确保字符串正确以 NULL 结尾,以避免内存泄漏和其他内存安全问题
  • 确保复制函数,特别是在使用循环时,被正确设计为不会超过一个字节到后续缓冲区或变量中(off-by-one 漏洞)
  • 仔细选择类型和强制转换以避免整数溢出等问题

还有更多...

于 2021-05-13T23:01:03.180 回答