3. 程序内部安全
软件程序在编码完成实际部署后,在实际运行过程中,会碰到各种情况,如每次运行时操作系统内存分配情况不同,系统资源分配情况不同,不同用户的输入不同,同时存在的其他进程不同,网络连接情况不同等等。这些不同情况不可能在软件测试过程中模拟得到,只有靠良好的软件设计和编码来保证软件的正确运行,因此,软件在代码执行过程中,动态地检查自身运行情况,确保软件按照预期正确处理各种情况。
1)程序内部接口安全:软件程序内部也存在多个组件、多个函数之间的互相调用,因此,组件或函数的调用过程也需要检查能否调用成功,参数传递是否合理和安全。一个简单的例子是,某个软件内部需要将用户的中文姓名由一个函数传递给另外一个函数,如果被调用函数想当然地只分配了8个字节的空间来接收该中文姓名,那么在碰到有五个汉字的中文姓名时就会出现问题。
2)异常安全处理:软件程序在运行过程中可能会出现某种错误而导致中断正常的控制流,这就是异常现象。对于异常,软件程序应当提供异常安全处理代码,使其能检测出各种异常,并安全处理各种可能的运行路径,保证程序总能“正确”的运行。不提供异常处理代码的软件程序可能会在异常发生的时候停止运行,严重的甚至可能引发安全问题。如某个银行转账程序,如果在用户试图转账时发生运行时错误(比如要调用的某个动态库加载不成功),没有安全处理程序,则该软件程序可能会导致用户的资金已经转出,同时接收方账号尚未收到资金况。