Convey to your vendors your
concerns about software quality in their products.
Observe the rules presented in the chapter when designing or coding
any software, and especially when writing software that needs extra
privileges or trust, runs SUID or SGID, or provides a network
service.
Don't write your own versions of library functions.
Don't create new network protocols when tested
protocols are available.
Don't invent your own encryption algorithms or
protocols.
Check all arguments to library or system calls. Check return values
from every call.
Think about using chroot for privileged programs.
Avoid storing or transmitting passwords in cleartext in any
application.
Be very cautious about generating and using
"random" numbers.
Include logging facilities in your programs.
Test your programs with random and deliberately malicious input.
Read Chen, Wagner, and Dean's paper on
setuid before writing a SUID program.