上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()出现了异常也不会导致用户变成管理员角色。这样就更加安全了。