【读书】《白帽子讲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.mzph.cn/news/600689.shtml

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

相关文章

使用pymysql框架连接和查询MySQL数据库

使用pymysql框架连接和查询MySQL数据库步骤: 前提:安装并import pymysql模块 1、使用 pymysql.connect()函数创建一个数据库连接对象 2、正确填写数据库配置信息,地址、端口、用户名、密码、数据库名称 3、创建游标…

微服务-sentinel-基本案例,持久化

sentinel 功能 限流 限流文档 直接拒绝:触发阀值直接抛弃。冷启动:在一段时间内针对突发流量缓慢增长处理数量。 3)匀速器:请求以均匀的速度通过。 降级降级文档 1)RT 统计时间内,大于预设请求数量&…

MySQL数据库的查询操作

MySQL单表查询 字段解析字段名字段类型雇员编号idint雇员姓名namevarchar(30)雇员性别sexenum雇用时期hire_datedate雇员职位postvarchar(50)职位描述job_descriptionvarchar(100)雇员薪水salarydouble(15,2)办公室officeint部门编号dep_idint #创表 CREATE TABLE company.em…

架构(1)

目录 1.如何理解架构的演进? 2.如何理解架构的服务化趋势? 3.架构中有哪些技术点? 4.谈谈架构中的缓存应用? 5.在开发中缓存具体如何实现? 1.如何理解架构的演进? 初始阶段的网站架构应用服务和数据服…

tcl 基础

exec catch file mkdir

【QT】QStandardItemModel类的应用介绍

目录 1 概述 2 常用方法 3 QStandardItemModel的使用 3.1 界面设计与主窗口类定义 3.2 系统初始化 3.3 从文本文件导入数据 3.4 数据修改 3.5 单元格格式设置 3.6 数据另存为文件 1 概述 QStandardItemModel是标准的以项数据(itemdata)为基础的…

【管理篇 / 恢复】❀ 08. 文件权限对macOS下用命令刷新固件的影响 ❀ FortiGate 防火墙

【简介】虽然上篇文章中成功的在macOS下刷新了固件,但是很多小伙伴在实际操作中碰到了无法成功的状况,我们来看看最常见的一种。 在/private/tftpboot目录拷贝另一个版本的固件文件,具体拷贝过程不再详述。 打开终端,输入命令 sud…

Do you know about domestic CPUs

Do you know about domestic CPUs CPU指令集国产CPU CPU指令集 国产CPU 参考文献 国产CPU之4种架构和6大品牌指令集及架构一文深入了解 CPU 的型号、代际架构与微架构国产GPU芯片厂商有哪些深入GPU硬件架构及运行机制详解服务器GPU架构和基础知识

编写一个弹跳小球的程序,小球在窗口中四处反弹(python)

import pygame import random# 初始化Pygame pygame.init()# 窗口尺寸 width 800 height 600# 创建窗口 screen pygame.display.set_mode((width, height)) pygame.display.set_caption("Bouncing Ball")# 小球初始位置和速度 ball_radius 20 ball_color (255, …

TCP和UDP的区别是什么

TCP和UDP是互联网协议中两个重要传输层协议。 一、工作原理 1.1 TCP TCP是一种面向连接的协议,通过三次握手建立可靠的连接。发送端将数据分割成多个TCP段,并通过IP进行传输。接收端接收到TCP后进行重组,并通过确认机制确保数据的可靠性。…

HUAWEI华为荣耀MagicBook X 15酷睿i5-10210U处理器集显(BBR-WAH9)笔记本电脑原装出厂Windows10系统

链接:https://pan.baidu.com/s/1YVcnOP5YKfFOoLt0z706rg?pwdfwp0 提取码:fwp0 MagicBook荣耀原厂Win10系统自带所有驱动、出厂主题壁纸、系统属性专属LOGO标志、Office办公软件、华为/荣耀电脑管家等预装程序 文件格式:esd/wim/swm 安装…

docker 部署haproxy cpu占用特别高

在部署mysql 主主高可用时&#xff0c;使用haproxy进行负载&#xff0c;在服务部使用的情况下发现服务器cpu占比高&#xff0c;负载也高&#xff0c;因此急需解决这个问题。 1.解决前现状 1.1 部署配置文件 cat > haproxy.cfg << EOF globalmaxconn 4000nbthrea…

解码 Elasticsearch 查询 DSL:利用 Elasticsearch 中的 has_child 和 has_parent 查询进行父子文档搜索

今天&#xff0c;让我们深入研究 has_child 查询和 has_parent 查询&#xff0c;这将帮助我们将 2 个不同的文档组合到一个索引中&#xff0c;从而使我们能够将它们与关系关联起来。 这样做会对我们搜索相关文档时有很大帮助。 在使用 has_child 及 has_parent 这种关系时&…

移动端-vue-BScroll用法教程

移动端-vue-BScroll用法教程 简介官网安装使用移动端滚动使用移动端联合滚动实现懒加载页面使用 扩展-什么是防抖和节流相同点区别 简介 BetterScroll 是一款重点解决移动端&#xff08;已支持 PC&#xff09;各种滚动场景需求的插件&#xff0c;是最接近与原生的滚动插件&…

51单片机定时/计数器相关知识点

51单片机定时/计数器相关知识点 结构组成 51单片机的定时/计数器中有两个寄存器&#xff1a; T0&#xff1a;低位&#xff1a;TL0&#xff08;字节地址8AH&#xff09;高位&#xff1a;TH0&#xff08;字节地址8CH&#xff09;T1&#xff1a;低位&#xff1a;TL1&#xff08…

【教学类-综合练习-03】20231214 大3班 数字加减法练习(数字火车、X—Y加法减法、X乘法、X—Y数字分合)

第二次来大3班投放综合学具 第二次做综合题&#xff0c;大3班孩子选择的内容就跟更多了 今天高手没有来&#xff0c;每人能做“加减乘”

vue封装组件(一)标签和下拉框组合实现添加数据

背景: 最近接入短剧内容&#xff0c;需要添加短剧合作方。在详情页需要支持添加组件 方案一&#xff1a;标签tag加上输入框实现添加数据。图片见下 这个是刚开始做的&#xff0c;后来产品觉得这样会造成随意修改数据&#xff0c;需要改成下拉框形式添加 方案二&#xff1a;标签…

算法每日一题:在链表中插入最大公约数 | 链表 | 最大公约数

hello&#xff0c;大家好&#xff0c;我是星恒 今天的题目是有关链表和最大公约数的题目&#xff0c;比较简单&#xff0c;核心在于求解最大公约数&#xff0c;我们题解中使用辗转相除法来求解&#xff0c;然后我们会在最后给大家拓展一下求解最大公约数的四个方法&#xff0c;…

vue3学习 【2】vite起步和开发工具基本配置

vite的简介 官方文档 刚起步学习&#xff0c;所以我们只需要按照官方文档的入门流程即可。推荐阅读一下官网的为什么使用vite vite目前需要的node版本是18&#xff0c;可以参考上一篇文章的安装nvm&#xff0c;用来进行多版本的node管理。 vite安装与使用 npm create vitela…

Android两个APP之间跳转+手机图标修改

APP之间跳转 两个APP之间跳转同样使用Intent进行跳转&#xff0c;将需要跳转的APP都下载到手机中&#xff0c;通过主APP调用需要跳转的APP包名进行跳转。 最好在其中加上try-catch语句&#xff0c;当需要跳转的APP不存在时进行错误抓取。 代码如下&#xff1a; Intent mInten…