3)最小化反馈:最小化反馈是指在程序内部处理时,尽量将少的信息反馈到运行界面来,即避免给予不可靠用户过多的信息,防止不可靠用户据此猜测软件程序的运行处理机制。最小化反馈可以用在成功的流程,也可以用在发生错误的流程中。典型的例子如用户名和口令认证程序,不管用户是用户名输入错误还是口令输入错误,认证端都只反馈统一的“用户名/口令错误”,而不是分别告知“用户名错误”和“口令错误”,这样可以避免让攻击者猜测已经存在的用户名,并根据用户名来猜测口令。当然,作为软件程序的跟踪检查日志,可以记录较为详细的程序运行信息,而这些信息是只允许有权限的人员查看。
4)避免竞争条件:竞争条件一般涉及一个或多个进程访问某个共享资源(如某个文件或变量),这些进程在访问共享资源时没有适当地控制,如果软件程序受困于互相等待对方释放资源时,死锁就发生了。例如,如果进程l锁定了资源A并等待资源B,而进程2锁定了资源B并等待资源A,死锁就发生了。一种简单的死锁解决方案是要求所有进程按相同顺序锁定资源。
5)安全使用临时文件:很多安全漏洞发生在访问已知文件名或可猜测的临时文件时。常见的情况是,程序在一个临时目录中打开一个文件,然后就将数据写到文件中,然而,如果攻击者预先创建一个符号链接,将这个临时文件指向其他文件,就有可能将数据写到那些文件中。安全使用临时文件办法包括:不在/tmp建立临时文件,使用随机名建立临时文件,在往文件中写人数据之前检查文件是否已经存在,使用系统接口来建立临时文件等。