科普
软件安全架构设计指南(篇一):安全设计原则2024-01-03 09:15:580
230
软件架构在开发安全应用程序中起着至关重要的作用。当安全措施和最佳实践无缝集成到软件的架构设计中时,不仅有助于降低安全风险,而且从长远来看还可以节省时间和资源。
原则一:最小攻击面
攻击表面(英语: attack surface) ,也称攻击面、攻击层面,是指软件环境中可以被未授权用户(攻击者) 输入或提取数据而受到攻击的点位(攻击矢量)。
攻击矢量的示例包括:
● 用户输入字段
● 协议
● 接口
● 服务
系统每增加一个功能特性就有可能会引入新的风险,通过安全开发可以减少攻击面进而达到控制系统整体风险的目的。
减少攻击面示例:
示例:Web应用提供一个搜索功能
减少攻击面措施
● 该功能只能被授权的用户使用
● 后端代码对用户输入的数据进行了校验
● 该功能不支持任意文字输入,只支持从指定列表中查看
原则二:默认安全
● 让默认的配置和策略尽可能的安全
● 只有充分了解业务安全需求的前提下,才能更好的使用该原则
默认安全的例子:
● 在许多场合,安全和产品体验经常会发生冲突,这时候应当选择安全优先,在安全的前提下,可以允许通过手动关闭安全配置或策略来提升产品体验。
● 产品应该默认打开密码复杂度策略,即不允许用户使用不符合密码复杂度策略的密码,但产品可能可以允许用户关闭这个策略来提升体验。
原则三:权限最小化
权限 (privilege) 是指某个特定的用户具有特定的系统资源使用权力,像是文件夹,特定系统指令的使用或存储量的限制。
权限分类:
● 用户权限
● 资源权限
系统只拥有完成任务所必须的最小权限,即不赋予不必要权限。
违反权限最小化的例子:
● 比如:某中间件服务器只需要访问网络、读取数据库和向日志服务器写日志的权限,那就完全没有必要赋予其更多其它的权限(特别是管理级别的特权)
● 比如:该业务只需要查询的权限,但却使用了root账户进行连接,如果该业务遭受SQL注入攻击,就会造成很大的影响。
免费注册
登录