溢出是程序设计者设计时的不足所带来的错误。 一般来说,更改底层系统以避免常见的安全问题是一个极好的想法,我们在本文后面也会遇到这个主题。事实证明存在许多可用的防御措施,而一些最受欢迎的措施可分组为以下类别: 基于探测方法(canary)的防御。这包括StackGuard(由Immunix所使用)、ProPolice(由OpenBSD所使用)和Microsoft的/GS选项。 非执行的堆栈防御。这包括SolarDesigner的non-exec补丁(由OpenWall所使用)和execshield(由RedHat/Fedora所使用)。 其他方法。这包括libsafe(由Mandrake所使用)和堆栈分割方法。 遗憾的是,迄今所见的所有方法都具有弱点,因此它们不是万能药,但是它们会提供一些帮助。
匿名回答于2023-09-14 14:41:37