【读书】《白帽子讲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小结

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

web期末作业数字时钟,实时更新,音乐播放

文章目录 月球动态引导页加载引导页主页面主页面html需要完整代码私信我 月球动态引导页 加载引导页 主页面 主页面html <!DOCTYPE html> <html lang"zh-CN"><head><meta http-equiv"X-UA-Compatible" content"IEedge,chrome1&…

【数据采集与预处理】流数据采集工具Flume

一、Flume简介 数据流 &#xff1a;数据流通常被视为一个随时间延续而无限增长的动态数据集合&#xff0c;是一组顺序、大量、快速、连续到达的数据序列。通过对流数据处理&#xff0c;可以进行卫星云图监测、股市走向分析、网络攻击判断、传感器实时信号分析。 &#xff08;…

使用docker安装mysql 8.0

打开命令行&#xff0c;运行 ocker pull mysql:8.0.21 下载成功后&#xff0c;可以看到 进入cmd&#xff0c;输入 docker run -d --name mysql -p 3306:3306 -v /root/mysql/data:/var/lib/mysql -v /root/mysql/config:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORDabc12345…

Vue3-36-路由-路由的元数据信息 meta

什么是 meta 简单的理解&#xff0c;meta 就是路由对象 的一个属性对象&#xff0c; 可以 通过这个 属性给 路由对象添加 一些必要的属性值&#xff0c; 在使用路由对象时可以获取到这个属性型对象&#xff0c;从而进行一些其他的逻辑判断。 meta 这个非常的简单&#xff0c;就…

最新GPT4教程,GPT语音对话使用,Midjourney绘画,ChatFile文档对话总结+DALL-E3文生图教程工具

一、前言 ChatGPT3.5、GPT4.0、GPT语音对话、Midjourney绘画&#xff0c;文档对话总结DALL-E3文生图&#xff0c;相信对大家应该不感到陌生吧&#xff1f;简单来说&#xff0c;GPT-4技术比之前的GPT-3.5相对来说更加智能&#xff0c;会根据用户的要求生成多种内容甚至也可以和…

【Filament】自定义Blinn Phong光照模型

1 前言 光照元素主要有环境光&#xff08;ambient&#xff09;、漫反射光&#xff08;diffuse&#xff09;、镜面反射光&#xff08;specular&#xff09;&#xff0c;基础的光照模型主要有兰伯特&#xff08;Lambert&#xff09;光照模型、冯氏&#xff08;Phong&#xff09;光…

解决pyuvc无法读取yuv格式的问题

问题描述 我使用pyuvc访问uvc摄像头&#xff0c;但是发现pyuvc只支持了MJPEG的格式和GRAY格式。我在linux下通过v4l2-ctl查看&#xff0c;发现摄像头本身还支持YUV的格式&#xff0c;但是pyuvc解析出的帧格式则没有。后面通过阅读pyuvc的代码&#xff0c;发现libuvc本身没有限…

代码随想录刷题第三十八天| 理论基础 ● 509. 斐波那契数 ● 70. 爬楼梯 ● 746. 使用最小花费爬楼梯

代码随想录刷题第三十八天 动态规划基础理论 斐波那契数 (LC 509) 题目思路&#xff1a; 代码实现&#xff1a; class Solution:def fib(self, n: int) -> int:if n<1: return ndp [0 for _ in range(n1)]dp[1] 1for i in range(2, n1):dp[i] dp[i-1]dp[i-2] …

DS|图(存储与遍历)

题目一&#xff1a;DS图 -- 构建邻接表 题目描述&#xff1a; 已知一有向图&#xff0c;构建该图对应的邻接表。 邻接表包含数组和单链表两种数据结构&#xff0c;其中每个数组元素也是单链表的头结点&#xff0c;数组元素包含两个属性&#xff0c;属性一是顶点编号info&…

Spark概述

Spark概述 Spark是什么 Apache Spark是一个快速的&#xff0c;多用途的集群计算系统&#xff0c;相对于Hadoop MapReduce将中间结果保存在磁盘中&#xff0c;Spark使用了内存保存中间结果&#xff0c;能在数据尚未写入硬盘时在内存中进行运算Spark只是一个计算框架&#xff0c;…

unity PDFRender Curved UI3.3

【PDF】PDFRender 链接&#xff1a;https://pan.baidu.com/s/1wSlmfiWTAHZKqEESxuMH6Q 提取码&#xff1a;csdn 【曲面ui】 Curved UI3.3 链接&#xff1a;https://pan.baidu.com/s/1uNZySJTW0-pPwi2FTE6fgA 提取码&#xff1a;csdn

Syntax Error: Error: Cannot find module ‘imagemin-optipng‘

一、背景&#xff1a; 心酸&#xff0c;很难受&#xff1b;本人主要做后端开发&#xff0c;这几天要打包前端项目 遇到了这个报错 Syntax Error: Error: Cannot find module imagemin-optipng 搞了3天时间才打包成功&#xff0c;使用了各种姿势才搞定。期间百度了各种方案都…

JVM工作原理与实战(七):类的生命周期-初始化阶段

专栏导航 JVM工作原理与实战 RabbitMQ入门指南 从零开始了解大数据 目录 专栏导航 前言 一、类的生命周期 1.加载&#xff08;Loading&#xff09; 2.连接&#xff08;Linking&#xff09; 3.初始化&#xff08;Initialization&#xff09; 4.使用&#xff08;Using&…

噬菌体序列分析工具PhaVa的使用和使用方法

github: 25280841/PhaVa: Adapting the phasefinder approach for identifying phase variation to long reads (github.com) 挺简单的&#xff0c;这里就不翻译了&#xff0c;大家看着直接用吧。 PhaVa PhaVa is an approach for finding potentially Phase Variable invert…

linux中的系统安全

一.账号安全 将非登录用户的shell设为/sbin/nologin 系统中用户有三种&#xff1a;超级管理员 普通用户 程序用户 前两种用户可以登录系统&#xff0c;程序用户不给登录 所以称为非登录用户 命令格式&#xff1a; usermod -s /sbin/nologin&#xff08;改已有用户&#…

【动态规划】【字符串】132.分割回文串 II

作者推荐 【动态规划】【字符串】扰乱字符串 本文涉及的基础知识点 动态规划 字符串 LeetCode132. 分割回文串 II 给你一个字符串 s&#xff0c;请你将 s 分割成一些子串&#xff0c;使每个子串都是回文。 返回符合要求的 最少分割次数 。 示例 1&#xff1a; 输入&#x…

11.2 Linux串口驱动框架

tty 驱动程序框架 tty 驱动程序从下往上分别是设备驱动层、行规程、终端虚拟化、TTY I/O层&#xff0c;它们的功能如下&#xff1a; 设备驱动层&#xff1a;用于驱动设备&#xff0c;如串口、显示器、键盘等。行规程&#xff1a;用于处理控制字符、回显输入数据、缓存输入数据…

矩阵的乘法

首先矩阵的乘法定义如下&#xff1a; #include <stdio.h> int main() { int i 0; int j 0; int arr[20][20] { 0 }; int str[20][20] { 0 }; int s[20][20] { 0 }; int n1 0; int n2 0; int m2 0; int z 0; int m1 0;…

使用IDEA官方docker插件构建镜像

此方法同样适用于jetbrains系列的其他开发软件 在IDEA中&#xff0c;如果是maven项目&#xff0c;可以使用插件 <plugin><groupId>com.spotify</groupId><artifactId>docker-maven-plugin</artifactId><version>1.2.2</version> &…

用于查询性能预测的计划结构深度神经网络模型--大数据计算基础大作业

用于查询性能预测的计划结构深度神经网络模型 论文阅读和复现 24.【X1.1】 在关系数据库查询优化领域&#xff0c;对查询时间的估计准确性直接决定了查询优化结果&#xff0c;进而影响到数据库整体的查询效率。但由于数据库自身的复杂性&#xff0c;查询时间受到数据分布、数据…