Chinese, Simplified
描述
安全地处理错误是安全编码的一个关键方面。有两种类型的错误需要特别注意。第一个是在处理安全控制本身时发生的异常。重要的是,这些异常不会启用对策通常不允许的行为。作为开发人员,您应该考虑安全机制通常有三种可能的结果:
- 允许操作
- 禁止操作
- 例外
通常,您应该设计安全机制,以便故障将遵循与禁止操作相同的执行路径。例如,如果在处理期间存在异常,则isAuthorized(),isAuthenticated()和validate()等安全方法都应返回false。如果安全控制可以抛出异常,那么它们必须非常清楚该条件的确切含义。
另一种类型的安全相关异常是在不属于安全控制的代码中。如果它们影响应用程序是否正确调用控件,则这些异常与安全性相关。异常可能导致安全方法在不应该被调用时,或者它可能会影响安全控件中使用的变量的初始化。
例子
isAdmin
isAdmin = true; try { codeWhichMayFail(); isAdmin = isUserInRole( “Administrator” ); } catch (Exception ex) { log.write(ex.toString()); }
如果codeWhichMayFail()失败,则默认情况下用户是管理员。这显然是一种安全风险。在这种情况下,修复很简单。它涉及简单的逻辑反转。在示例实例中,这很容易做到。
isAdmin = false; try { codeWhichMayFail(); isAdmin = isUserInrole( "Administrator" ); } catch (Exception ex) { log.write(ex.toString()); }
此示例也是最低权限原则的示例,该原则声明您永远不应授予超出要求的访问权限。如果codeWhichmayFail()需要管理员访问权限,我们应该在运行该代码之前验证管理员访问权限。
相关漏洞
相关控制
相关原则
参考
https://buildsecurityin.us-cert.gov/articles/knowledge/principles/faili…
原文:https://www.owasp.org/index.php/Fail_securely
本文:
讨论:加入知识星球或者小红圈【首席架构师圈】
发布日期
星期六, 七月 6, 2019 - 19:57
最后修改
星期四, 一月 5, 2023 - 21:55
Article
最新内容
- 1 week ago
- 1 week ago
- 1 week ago
- 1 week ago
- 1 week ago
- 1 week 6 days ago
- 2 weeks ago
- 2 weeks 2 days ago
- 2 weeks 2 days ago
- 2 weeks 2 days ago