【读书】《白帽子讲web安全》个人笔记Ⅰ-1

目录

前言:

第1章 我的安全世界观

1.1 Web安全简史

1.1.1中国黑客简史

1.1.2黑客技术的发展历程

1.1.3web安全的兴起

1.2黑帽子,白帽子

1.3返璞归真,揭秘安全的本质

1.4破除迷信,没有银弹

1.5安全三要素

1.6如何实施安全评估

1.6.1资产等级划分

1.6.2威胁分析

1.6.3风险分析

1.6.4设计安全方案

1.7白帽子兵法

1.7.1Secure By Default原则

1.7.1.1黑名单、白名单

1.7.1.2最小权限原则

1.7.2纵深防御原则

1.7.3数据与代码分离原则

1.7.4不可预测性原则

1.8小结


前言:

即将考试周了,考前死盯着那几门复习不是我的作风,但花大功夫去学一些新的技术时间会有些吃紧。所以翻出这本尘封已久的道哥著作,挑战这本让三个月前的自己败下阵来的小部头,希冀每天有所思考有所沉淀,深化对web安全的理解。

冷静下来,暂时从具体的技术细节脱身,冷静审视安全本身为何。

“种一棵树的最好时间是十年前,其次是现在。”

第1章 我的安全世界观

1.1 Web安全简史

1.1.1中国黑客简史

在计算机安全领域,黑客是一群破坏规则、不喜欢被拘束的人,因此总想着能够找到系统的漏洞,以获得一些规则之外的权力。

不想拿到root的黑客,不是好黑客。

有的黑客,精通计算机技术,能自己挖掘漏洞,并编写exploit;而有的黑客,只对攻击本身感兴趣,对计算机原理和各种编程技术的了解比较粗浅,因此只懂得编译别人的代码,自己并没有动手能力,这种黑客被称为“Script Kids”,即“脚本小子”。

中国黑客的发展分为了:启蒙时代、黄金时代、黑暗时代。

启蒙时代:20世纪90年代,中国互联网刚刚处于起步阶段,这时候的黑客们多是由于个人爱好而走上这条道路,好奇心与求知欲驱使他们前进,没有任何利益瓜葛,崇尚分享、自由、免费的互联网精神。

黄金时代:以中美黑客大战为标志,各种黑客组织如雨后春笋般冒出。此阶段的中国黑客,其普遍的特点是年轻,有活力,充满激情,在技术上也许还不够成熟。此时期开始出现以盈利为目的的攻击,黑色产业链逐渐形成。

黑暗时代:大多数黑客组织没有坚持下来,在上一个时期非常流行的黑客技术论坛式微没落,所有门户型的漏洞披露站点也不再公布漏洞相关的技术细节。整个互联网笼罩在黑色产业链的阴影之下,纯粹的黑客精神(开放、分享)实质已经死亡。

1.1.2黑客技术的发展历程

因为早期的web技术发展远远不成熟,加之通过攻击系统软件,黑客们往往能直接获取root权限,所以初期黑客的攻击目标以系统软件居多。

在早期互联网中,web并非互联网的主流应用,因此黑客们主要的攻击目标是网络、操作系统以及软件等领域,web安全领域的攻击与防御技术均处于非常原始的阶段。

运营商、防火墙对于网络的封锁,使得暴露在互联网上的非web服务越来越少,且web技术的成熟使得web应用的功能越来越强大,最终成为了互联网的主流。黑客们的目光也渐渐转移到了web上。

1.1.3web安全的兴起

在web1.0时代,人们更多的是关注服务器端动态脚本的安全问题,比如将一个可执行脚本(俗称webshell)上传到服务器上,从而获得权限。

SQL注入的出现是web安全史上的一个里程碑,黑客们发现通过SQL注入攻击,可以获取很多重要的、敏感的数据,甚至能够通过数据库获取系统访问权限,这种效果不比直接攻击系统软件差。

XSS的出现则是web安全史上的另一个里程碑。

伴随着web2.0的兴起,XSS,CSRF等攻击已经变得更为强大。web攻击的思路也从服务端转向了客户端,转向了浏览器和用户。

web安全将紧跟着互联网发展的脚步,不断演化出新的变化。

1.2黑帽子,白帽子

在黑客的世界中,往往用帽子的颜色来比喻黑客的好坏。白帽子,是指哪些精通安全技术,但是工作在反黑客领域的专家们;而黑帽子,则是指利用黑客技术造成破坏,甚至进行网络犯罪的群体。

对于黑帽,只要能够找到系统的一个弱点,就可以达到入侵系统的目的;而对于白帽,必须找到系统的所有弱点,不能有遗漏才能保证系统不会出现问题。

从对待问题的角度来看,黑帽为了完成一次入侵,需要利用各种不同漏洞的组合来达到目的,是在不断地组合问题;而白帽在设计解决方案时,要不断分解问题,再对分解后的问题逐个予以解决。

随着防御技术的不断完善,攻击技术也在不断发展。谁能在技术上领先,谁就能占据主动。互联网技术日新月异,在新技术领域的发展中,也存在着同样的博弈过程。

1.3返璞归真,揭秘安全的本质

安全问题的本质是信任的问题。

一切安全方案设计的基础,都是建立在信任关系上的。我们必须相信一些东西,必须有一些最基本的假设,安全方案才能得以建立;如果我们否定一切,安全方案就会如无源之水,无根之木,无法设计,也无法完成。

把握信任条件的度,使其恰到好处,是设计安全方案的难点所在,也是安全这门学问的艺术魅力所在。

1.4破除迷信,没有银弹

在解决安全问题的过程中,不可能一劳永逸,即“没有银弹”。

安全是一个持续的过程。

自从互联网有了安全问题以来,攻击和防御技术就在不断碰撞和对抗的过程中得到发展。以不变的防御手段对抗不断发展的攻击技术,就犯了刻舟求剑的错误。

黑客们在不断地研究和寻找新的技术攻击,作为防御的一方,没有理由不持续跟进。

1.5安全三要素

安全三要素,简称CIA,是安全的基本组成元素,分别是机密性(Confidentiality)、完整性(Integrity)、可用性(Availability)。

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

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

可用性要求保护资源是“随需而得”。

1.6如何实施安全评估

一个安全评估的过程,可以简单分为4个阶段:资产等级划分、威胁分析、风险分析、确认解决方案。

1.6.1资产等级划分

互联网公司除了拥有一些固定资产,如服务器等死物外,最核心的价值就是其拥有的用户数据。

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

1.6.2威胁分析

在本书中介绍一种威胁建模的方法,它最早是由微软提出的,叫做STRIDE模型。

 

1.6.3风险分析

风险由以下因素组成:

Risk=Probability * Damage Potential

本书中用微软提出的DREAD模型来更科学地衡量风险。

在上表中,高、中、低三个等级分别以3、2、1的分数代表其权重值,因此我们可以具体计算出某一个威胁的风险值。

高危:12~15分 中危:8~11分 低危:0~7分

1.6.4设计安全方案

安全评估的产出物,就是安全解决方案。

作为安全工程师,要想的就是如何通过简单而有效的方案,解决遇到的安全问题。安全方案必须能够有效抵抗威胁,但同时不能过多干涉正常的业务流程,在性能上也不能拖后腿。

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

最终,一个优秀的安全方案应该具备以下特点:能够有效解决问题;用户体验好;高性能;低耦合;易于扩展与升级。

1.7白帽子兵法

本节将讲述在具体设计安全方案时的技巧,在实战中可能用到的方法。

1.7.1Secure By Default原则

1.7.1.1黑名单、白名单

如果更多地使用白名单,那么系统就会变得更安全。

但并不是用了白名单就一定安全了。选择白名单的思想,基于白名单来设计安全方案,其实就是信任白名单是好的,是安全的。但是一旦这个信任基础不存在了,那么安全就荡然无存。

1.7.1.2最小权限原则

最小权限原则也是安全设计的基本原则之一,其要求系统只授予主体必要的权限,而不要过度授权,这样能有效地减少系统、网络、应用、数据库出错的机会。

在使用最小权限原则时,需要认真梳理业务所需要的权限。

1.7.2纵深防御原则

纵深防御(Defense in Depth)是设计安全方案时的重要指导思想。

“木桶理论”

纵深防御包含两层含义:

首先,要在各个不同层面、不同方面实施安全方案,避免出现疏漏,不同安全方案之间需要相互配合,构成一个整体。

其次,要在正确的地方做正确的事情,即:在解决根本问题的地方实施针对性的安全方案。

1.7.3数据与代码分离原则

这一原则广泛适用于各种由于“注入”而引发安全问题的场景。

在Web安全中,如XSS、SQL Injection、CRLF Injection、X-Path Injection等由“注入”引起的问题均可以根据“数据与代码分离原则”设计出真正安全的解决方案,因为这个原则抓住了漏洞形成的本质原因。

不能让用户输入的数据变为可执行的代码。(如防止SQL注入的参数化查询就符合这一原则)

1.7.4不可预测性原则

Secure By Default是时刻要牢记的总则;纵深防御,是要更全面、更正确地看待问题;数据与代码分离,是从漏洞成因上看问题;接下来要讲的“不可预测性”原则,则是从克服攻击方法的角度看问题。

不可预测性能有效地对抗基于篡改、伪造的攻击。

不可预测性原则可以巧妙地用在一些敏感数据上。比如在CSRF的防御技术中,通常会使用一个token来进行有效防御。

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

1.8小结

本章归纳了笔者对于安全世界的认知和思考,从互联网安全的发展史说起,揭示了安全问题的本质,以及应该如何展开安全工作,最后总结了设计安全方案的几种思路和原则。

安全是一门朴素的学问,也是一种平衡的艺术。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/325348.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

透明OLED屏价格:影响因素与市场趋势

在当今的显示技术领域,透明OLED屏以其独特的透明特性和出色的显示效果,正逐渐成为市场的新宠。然而,对于许多消费者和企业来说,透明OLED屏的价格仍是关注的焦点。作为OLED透明屏市场部总监,我认为了解影响透明OLED屏价…

秋招复习之树

目录 前言 1 二叉树 二叉树常见术语 二叉树基本操作 初始化二叉树 插入与删除节点 常见二叉树类型 1. 完美二叉树 2. 完全二叉树 3. 完满二叉树 4. 平衡二叉树 二叉树的退化 2 二叉树遍历 层序遍历 代码实现 复杂度分析 前序、中序、后序遍历 复杂度分析 3 二叉树数组表示 表…

Vue CLI组件通信

目录 一、组件通信简介1.什么是组件通信?2.组件之间如何通信3.组件关系分类4.通信解决方案5.父子通信流程6.父向子通信代码示例7.子向父通信代码示例8.总结 二、props1.Props 定义2.Props 作用3.特点4.代码演示 三、props校验1.思考2.作用3.语法4.代码演示 四、prop…

LINUX服务器防火墙nf_conntrack问题一例

一、故障现象 业务反馈服务异常,无法响应请求,从系统日志 dmesg 或 /var/log/messages 看到大量以下记录:kernel: nf_conntrack: table full, dropping packet. 二、问题分析 业务高峰期服务器访问量大,内核 netfilter 模块 conntrack 相关参…

开启Android学习之旅-3-Android Activity

Android Activity 本文总结《第一行代码 Android》第3版的内容 环境: Android Studio Giraffe | 2022.3.1 Patch 3 Activity 是什么? Activity 简单将就是UI界面,包含两部分 Activity 类 和应用布局文件,如果是 Compose 则另说&…

[NSSRound#3 Team]This1sMysql

[NSSRound#3 Team]This1sMysql 源码 <?php show_source(__FILE__); include("class.php"); $conn new mysqli();if(isset($_POST[config]) && is_array($_POST[config])){foreach($_POST[config] as $key > $val){$value is_numeric($var)?(int)$…

几种常见的CSS三栏布局?介绍下粘性布局(sticky)?自适应布局?左边宽度固定,右边自适应?两种以上方式实现已知或者未知宽度的垂直水平居中?

几种常见的CSS三栏布局 流体布局 效果&#xff1a; 参考代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1…

【致远FAQ】V8.0_甘特图能不能实现行表头一级一级显示(树形结构)

问题描述 甘特图能不能实现行表头一级一级显示&#xff08;树形结构&#xff09; 问题解决 设置统计时把合并同类型和显示行合计都勾选上就可以了 效果参考

Python爬虫实战之萝卜投研

Python爬虫实战之萝卜投研 声明&#xff1a;以下内容均为我个人的理解&#xff0c;如果发现错误或者疑问可以联系我共同探讨 爬虫介绍 网站介绍 本次要爬取的网站为*萝卜投研*&#xff0c;是利用人工智能、大数据、移动应用技术,建立的股票基本面分析智能投研平台&#xff…

MongoDB入门介绍与实战

目录 1. 什么是MongoDB&#xff1f; 2. 安装MongoDB 1. 离线安装 2. 使用docker-compose安装 3. mongo命令行实战 1. 连接到 MongoDB 数据库 2. 创建集合&#xff08;表&#xff09; 3. 插入数据 4. 查询数据 5. 更新数据 6. 删除数据 4. Springboot集成MongoDB实战…

Java经典框架之Dubbo

Dubbo Java 是第一大编程语言和开发平台。它有助于企业降低成本、缩短开发周期、推动创新以及改善应用服务。如今全球有数百万开发人员运行着超过 51 亿个 Java 虚拟机&#xff0c;Java 仍是企业和开发人员的首选开发平台。 课程内容的介绍 1. Dubbo概述 2. Dubbo基本应用 3…

FFmpeg安装保姆级教程

在上一篇文章《IOS&#xff1a;Safari无法播放MP4&#xff08;H.264编码&#xff09;》里我们使用了FFmpeg来设置MP4的Profile和Level值&#xff0c;从而转换出适合IOS Safari上播放的MP4文件。本文接着介绍一下FFmpeg的安装&#xff1a; 一、安装过程 &#xff08;1&#xf…