Linux系统安全:纵深防御、安全扫描与入侵检测
上QQ阅读APP看书,第一时间看更新

1.3.5 安全地失败

安全地失败(Fail Safely)是指安全地处理错误。安全地处理错误是安全编程的一个重要方面。

在程序设计时,要确保安全控制模块在发生异常时遵循了禁止操作的处理逻辑。以代码清单1-1为例。

代码清单1-1 不安全地处理错误


isAdmin = true;
try {
    codeWhichMayFail();
    isAdmin = isUserInRole("Administrator");
}
catch (Exception ex)
{
    log.write(ex.toString());
}

如果codeWhichMayFail()出现了异常,那么用户默认就是管理员角色了,这显然导致了一个非常严重的安全风险。

修复这个问题的处理方式很简单,如代码清单1-2所示。

代码清单1-2 安全地处理错误


isAdmin = false;
try {
    codeWhichMayFail();
    isAdmin = isUserInrole( "Administrator" );
}
catch (Exception ex)
{
    log.write(ex.toString());
}

在代码清单1-2中,默认用户不是管理员角色,那么即使codeWhichMayFail()出现了异常也不会导致用户变成管理员角色。这样就更加安全了。