| ||
Do carefully check your buffer accesses by using safe string and buffer handling functions.
Do use compiler-based defenses such as /GS and ProPolice.
Do use operating-system-level buffer overrun defenses such as DEP and PaX.
Do understand what data the attacker controls, and manage that data safely in your code.
Do not think that compiler and OS defenses are sufficientthey are not; they are simply extra defenses.
Do not create new code that uses unsafe functions.
Consider updating your C/C++ compiler since the compiler authors add more defenses to the generated code.
Consider removing unsafe functions from old code over time.
Consider using C++ string and container classes rather than low-level C string functions.