资讯专栏INFORMATION COLUMN

Web 安全之基本原则

UnixAgain / 854人阅读

摘要:基本原则安全的本质是信任问题。安全三要素安全三要素分别是机密性完整性可用性。攻击针对的就是安全元素的可用性。安全方案安全评估的产出物,就是安全方案。最小权限原则要求系统只授予必要的权限,而不是过度授权。

基本原则

安全的本质是信任问题。

通过一个安全检查的过程,可以梳理未知的人或物,使其变得可信任。被划分出来的具有不同信任级别的区域,我们成为信任域;划分两个不同信任域之间的边界,我们成为信任边界

数据从高等级的信任域流向低等级的信任域,是不需要经过安全检查的;数据从低等级的信任域流向高等级的信任域,则需要经过信任边界的安全检查。

安全三要素

安全三要素分别是机密性(Confidentiality)、完整性(Integrity)、可用性(Availability)

机密性要求保护数据内容不能泄露,加密是实现机密性的常见手段。

完整性要求保护数据内容是完整的、没有被篡改的。 常见的保证完整性的手段是 数字签名。

可用性要求保护资源是“随需而得”。DoS(Denial of Service)攻击针对的就是安全元素的可用性。

安全评估

安全评估可以又以下四个部分组成: 资产等级划分、威胁分析、风险分析、确认解决方案

资产等级划分

资产等级划分是所有工作的基础,明确我们目标是什么,要保护什么。

互联网安全的核心问题,是数据安全的问题。

在这个过程中,我们需要明确我们保护的核心数据是什么,并对数据的安全等级进行划分,来区分出不同数据的重要程度。

在完成等级划分后,接下来就是划分信任域和信任边界了。在这个阶段,可以根据数据安全等级的不同,划分不同的信任域,不同信任域之间的数据流动必须经过安全边界的检查。

威胁分析

在安全领域,我们把可能造成危害的来源成为威胁(Threat),把可能会出现的损失成为风险(Risk)

威胁分析就是把所有可能的威胁都找出来。具体怎么找呢? 一般是采用头脑风暴法。当然也有一种比较科学的方法,就是威胁建模。

下面我们来看最早有微软提出的 STRIDE威胁建模。

STRIDE是由六个字母的首字母缩写,我们分析威胁的时候,可以从以下六个方面考虑:

威胁 定义 应对的安全属性
Spoofing(伪装) 冒充他人身份 认证
Tampering(篡改) 修改数据或代码 完整性
Repudiation(抵赖) 否认做过的事情 不可抵赖性
InformationDisclosure(信息泄露) 机密信息泄露 机密性
Denial of Service(拒绝服务) 拒绝服务 可用性
Elevation of Privilege(提升权限) 未经授权获得许可 授权

在进行威胁分析的时候,要尽可能的不遗漏威胁。

风险分析

影响风险高低的因素,除了造成损失的大小外,还需要考虑发生的可能性。

安全方案

安全评估的产出物,就是安全方案。安全方案要有一定的针对性,这种针对性是由等级划分、威胁分析、风险分析等阶段的结果给出的。

安全是为产品的发展和成长保驾护航的,我们不能用“粗暴”的方案去阻碍产品的正常发展。

没有不安全的业务,只有不安全的实现方式。

好的安全方案应该是对用户透明的,尽可能不要改变用户的使用习惯。

好的安全方案应该有以下特点:

有效解决问题

用户体验好

高性能

低耦合

易于扩展和升级。

安全原则。 Secure By default原则

黑名单、白名单

简单来说,黑名单就是名单上的是被禁止的,不在名单上的都可被信任;白名单正好相反,名单上的可被信任,不在名单上的都不可信任。

一般情况下,最好是使用白名单,这样的方案虽然有时候会比较麻烦,但不失为一种谨慎的方案。

白名单也有不太好的地方,前面我们说到“安全问题的本质是信任问题,安全方案也是基于信任来做的”,白名单的策略,是基于白名单可被信任的基础来的,如果白名单容易被篡改,那么这个安全就无从谈起了。

最小权限原则。

最小权限原则要求系统只授予必要的权限,而不是过度授权。

这就要去我们认真梳理业务需要的权限,并细分权限。在授权的时候不妨反问下: 这个权限确实是必须的吗?

纵深防御(Defense in depth)

纵深防御包含两层含义:首先,要在不同的层面、不同方面实施安全方案,避免出现疏漏,不同安全方案之间要互相配合,构成一个整体;其次,要做正确的地方做正确的事情,即:在解决根本问题的地方实施针对性的方案。

数据代码分离原则

这一原则广泛使用 各种由于“注入”引发的问题。

web安全中,由注入引起的问题比比皆是: XSS、SQL Injection、CRLFInjection,X-Path Injection等

不可预测性原则(Unpredictable)

前面介绍的几条原则: Secure By Default, 是时刻要牢记的总则;纵深防御, 是要更全面、正确的看待问题;数据和代码分离,是从漏洞成因上看问题; 记下来的 不可预测原则,则是从客服攻击方法的角度看问题。

不可预测性,就是不让我们数据有规律,从而加大攻击的难度,甚至使得攻击方法失效。

比如说有的博客会用顺序递增的数字来作为文章的唯一标识,这样的话只有知道一篇文章的id就可以推测出其他文章的id。。

还有在CSRF防御技术中,通常会使用一个随机的token来防御。

不可防御性往往需要用到加密算法、随机数算法、哈希算法等。好好使用这条原则,在设计安全方案的时候往往会事半功倍。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/11367.html

相关文章

  • web 应用常见安全漏洞一览

    摘要:应用常见安全漏洞一览注入注入就是通过给应用接口传入一些特殊字符,达到欺骗服务器执行恶意的命令。此外,适当的权限控制不曝露必要的安全信息和日志也有助于预防注入漏洞。 web 应用常见安全漏洞一览 1. SQL 注入 SQL 注入就是通过给 web 应用接口传入一些特殊字符,达到欺骗服务器执行恶意的 SQL 命令。 SQL 注入漏洞属于后端的范畴,但前端也可做体验上的优化。 原因 当使用外...

    darkerXi 评论0 收藏0
  • web 应用常见安全漏洞一览

    摘要:应用常见安全漏洞一览注入注入就是通过给应用接口传入一些特殊字符,达到欺骗服务器执行恶意的命令。此外,适当的权限控制不曝露必要的安全信息和日志也有助于预防注入漏洞。 web 应用常见安全漏洞一览 1. SQL 注入 SQL 注入就是通过给 web 应用接口传入一些特殊字符,达到欺骗服务器执行恶意的 SQL 命令。 SQL 注入漏洞属于后端的范畴,但前端也可做体验上的优化。 原因 当使用外...

    Panda 评论0 收藏0
  • #yyds干货盘点# Web应用测试

    摘要:二应用系统开发完成后,需要对应用进行全面的测试,其测试方法与其他系统的测试既有相同之处,又有不同之处。测试手段基本相同应用系统的测试一样会采用人工测试工具测试评估等手段。 Web应用测试是软件评测师必考的知识点,每年在上午场和下午场都会出题,Web应用是一类特殊的软件,Web应用系统的开发同样要经过需求分析、设计、编码、实...

    haoguo 评论0 收藏0
  • Laravel学习笔记Two-Factor Authentication神器——Duo

    摘要:在登录后台时也是必须认证才行。使用这种总比粗暴的限制访问来保护安全要高效的多,一切都是为了自动化,为了提高生产率。总结本文主要学习使用这个神器来做,并学习了如何使用集成进程序中。我司最近需要一名伙伴一起共同航海去,有兴趣速来。 说明:本文主要研究利用Duo来实现双重认证,Two-Factor Authentication就是除了username-password这种登录认证之外,还使用...

    hoohack 评论0 收藏0

发表评论

0条评论

UnixAgain

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<