一书读懂Python全栈安全,剑指网络空间安全

news2024/11/15 17:04:43

写在前面

通过阅读《Python全栈安全/网络空间安全丛书》,您将能够全面而深入地理解Python全栈安全的广阔领域,从基础概念到高级应用无一遗漏。本书不仅详细解析了Python在网络安全、后端开发、数据分析及自动化等全栈领域的安全实践,还紧密贴合网络空间安全的最新趋势与挑战,确保您能掌握保护网络系统、预防黑客攻击、实施安全策略等关键技能。这不仅是一次知识的旅行,更是为您职业生涯保驾护航,助您剑指网络空间安全领域的巅峰,成为守护数字世界的坚强盾牌。

推荐图书

《Python全栈安全/网络空间安全丛书》([美]丹尼斯·伯恩)【摘要 书评 试读】- 京东图书

编辑推荐

安全是一个全栈性问题,包括用户接口、API、Web服务器、网络基础设施等。通过掌握强大的库、框架以及Python生态系统中的工具,你可自上而下地保护自己的系统。本书列举大量实例,插图清晰,代码丰富,准确地告诉你如何保护基于Python的Web应用程序。

《Python全栈安全》由经验丰富的安全专家Dennis Byrne撰写,讲解保护Python和基于Django的Web应用程序所需的一切,解释安全术语,揭开算法的神秘面纱。

本书开篇清晰讲解加密基础知识,然后循序渐进地讲述如何实施多层防御、安全的用户身份验证、安全的第三方访问,分析如何保护应用程序免受常见黑客攻击。

内容简介

  • 加密、散列和数字签名。
  • 创建和安装TLS证书。
  • 在Django中实现身份验证、授权、OAuth 2.0和表单验证
  • 防范点击劫持、跨站脚本和SQL注入等攻击

作者简介

Dennis Byrne 是23andMe 架构团队的成员,负责保护1000 多万客户的基因数据和隐私。在23andMe 之前,Dennis 是LinkedIn 的软件工程师。Dennis 是一名健美运动员和GUE 洞穴潜水员。他目前住在硅谷,远离阿拉斯加(他在那里长大并求学)。

目录

第Ⅰ部分 密码学基础

第1章 纵深防御 3

1.1 攻击面 4

1.2 什么是纵深防御 6

1.2.1 安全标准 7

1.2.2 最佳实践 8

1.2.3 安全基本原则 9

1.3 工具 11

1.4 小结 15

第2章 散列 17

2.1 什么是散列函数 17

2.2 原型人物 22

2.3 数据完整性 23

2.4 选择加密散列函数 24

2.4.1 哪些散列函数是安全的 24

2.4.2 哪些散列函数是不安全的 25

2.5 Python中的加密散列 27

2.6 校验和函数 30

2.7 小结 31

第3章 密钥散列 33

3.1 数据身份验证 33

3.1.1 密钥生成 34

3.1.2 什么是密钥散列 37

3.2 HMAC函数 39

3.3 时序攻击 43

3.4 小结 45

第4章 对称加密 47

4.1 什么是加密 47

4.2 cryptography包 50

4.2.1 危险品层 50

4.2.2 配方层 51

4.2.3 密钥轮换 53

4.3 什么是对称加密 54

4.3.1 分组密码 54

4.3.2 流密码 56

4.3.3 加密模式 57

4.4 小结 61

第5章 非对称加密 63

5.1 密钥分发问题 63

5.2 什么是非对称加密 64

5.3 不可否认性 69

5.3.1 数字签名 70

5.3.2 RSA数字签名 71

5.3.3 RSA数字签名验证 72

5.3.4 椭圆曲线数字签名 73

5.4 小结 76

第6章 传输层安全 77

6.1 SSL、TLS和HTTPS 77

6.2 中间人攻击 78

6.3 TLS握手 80

6.3.1 密码套件协商 80

6.3.2 密钥交换 81

6.3.3 服务器身份验证 84

6.4 Django与HTTP 88

6.5 Gunicorn与HTTPS 91

6.5.1 自签名公钥证书 92

6.5.2 Strict-Transport-Security响应头 94

6.5.3 HTTPS重定向 95

6.6 TLS和requests包 96

6.7 TLS和数据库连接 97

6.8 TLS和电子邮件 99

6.8.1 隐式TLS 99

6.8.2 电子邮件客户端身份验证 100

6.8.3 SMTP身份验证凭据 100

6.9 小结 101

第Ⅱ部分 身份验证和授权

第7章 HTTP会话管理 105

7.1 什么是HTTP会话 105

7.2 HTTP cookie 107

7.2.1 Secure指令 108

7.2.2 Domain指令 108

7.2.3 Max-Age 109

7.2.4 浏览器长度的会话 110

7.2.5 以编程方式设置cookie 110

7.3 会话状态持久化 111

7.3.1 会话序列化程序 111

7.3.2 简单的基于缓存的会话 113

7.3.3 基于直写式缓存的会话 116

7.3.4 基于数据库的会话引擎 116

7.3.5 基于文件的会话引擎 117

7.3.6 基于cookie的会话引擎 117

7.4 小结 122

第8章 用户身份验证 123

8.1 用户注册 124

8.1.1 模板 128

8.1.2 Bob注册账户 131

8.2 什么是用户身份验证 132

8.2.1 内置Django视图 133

8.2.2 创建一个Django应用 134

8.2.3 Bob登录和注销 137

8.3 简明要求身份验证 139

8.4 测试身份验证 140

8.5 小结 142

第9章 用户密码管理 143

9.1 密码变更工作流程 143

9.2 密码存储 149

9.2.1 加盐散列 152

9.2.2 密钥派生函数 154

9.3 配置密码散列 158

9.3.1 原生密码散列器 159

9.3.2 自定义密码散列器 160

9.3.3 Argon2密码散列 160

9.3.4 迁移密码散列器 161

9.4 密码重置工作流程 166

9.5 小结 169

第10章 授权 171

10.1 应用程序级授权 172

10.1.1 权限 173

10.1.2 用户和组管理 175

10.2 强制授权 180

10.2.1 低级困难方式 180

10.2.2 高级简单方式 183

10.2.3 条件渲染 185

10.2.4 测试授权 186

10.3 反模式和最佳实践 187

10.4 小结 188

第11章 OAuth 2 189

11.1 给予类型 190

11.2 Bob授权Charlie 195

11.2.1 请求授权 196

11.2.2 给予授权 197

11.2.3 令牌交换 197

11.2.4 访问受保护的资源 198

11.3 Django OAuth Toolkit 200

11.3.1 授权服务器职责 201

11.3.2 资源服务器职责 204

11.4 requests-oauthlib 209

11.5 小结 213

第Ⅲ部分 抵御攻击

第12章 使用操作系统 217

12.1 文件系统级授权 217

12.1.1 请求许可 218

12.1.2 使用临时文件 219

12.1.3 使用文件系统权限 220

12.2 调用外部可执行文件 222

12.2.1 用内部API绕过shell 224

12.2.2 使用subprocess模块 226

12.3 小结 228

第13章 永远不要相信输入 229

13.1 使用Pipenv进行包管理 229

13.2 YAML远程代码执行 232

13.3 XML实体扩展 235

13.3.1 二次爆炸攻击 235

13.3.2 十亿笑攻击 236

13.4 拒绝服务 238

13.5 Host标头攻击 239

13.6 开放重定向攻击 243

13.7 SQL注入 246

13.7.1 原始SQL查询 247

13.7.2 数据库连接查询 248

13.8 小结 249

第14章 跨站脚本攻击 251

14.1 什么是XSS 251

14.1.1 持久型XSS 252

14.1.2 反射型XSS 253

14.1.3 基于DOM的XSS 254

14.2 输入验证 256

14.3 转义输出 263

14.3.1 内置的渲染实用程序 264

14.3.2 HTML属性引用 266

14.4 HTTP响应标头 267

14.4.1 禁用对cookie的JavaScript访问 267

14.4.2 禁用MIME类型嗅探 270

14.4.3 X-XSS-Protection标头 271

14.5 小结 272

第15章 内容安全策略 273

15.1 编写内容安全策略 274

15.1.1 获取指令 276

15.1.2 导航和文档指令 280

15.2 使用django-csp部署策略 281

15.3 使用个性化策略 283

15.4 报告CSP违规 286

15.5 CSP Level 3 288

15.6 小结 289

第16章 跨站请求伪造 291

16.1 什么是请求伪造 291

16.2 会话ID管理 293

16.3 状态管理约定 295

16.4 Referer标头验证 298

16.5 CSRF令牌 301

16.5.1 POST请求 301

16.5.2 其他不安全的请求方法 303

16.6 小结 304

第17章 跨源资源共享 307

17.1 同源策略 307

17.2 简单CORS请求 309

17.3 带django-cors-headers的CORS 311

17.4 CORS预检请求 314

17.4.1 发送预检请求 314

17.4.2 发送预检响应 318

17.5 跨源发送cookie 319

17.6 CORS和CSRF抵御 321

17.7 小结 322

第18章 点击劫持 323

18.1 X-Frame-Options标头 326

18.2 Content-Security-Policy标头 327

18.3 与Mallory同步 329

18.4 小结 330

前言/序言

我使用Python来讲授安全,而不是反过来。换句话说,当阅读《Python全栈安全》时,你将学到比Python更多的安全知识。这有两个原因:首先,安全很复杂,而Python并非如此。其次,编写大量自定义的安全代码不是保护系统的最佳方式;繁重的任务几乎总是应该委托给Python、库或工具。

《Python全栈安全》涵盖初中级安全概念。这些概念用初学者级别的Python代码实现,无论是安全还是Python的资料都非高级水平。

《Python全栈安全》读者对象

《Python全栈安全》中的所有示例都模拟了在现实世界中开发和保护系统的挑战。因此,将代码推送到生产环境的程序员将学到最多的知识。《Python全栈安全》要求读者具备初级Python技能或具有其他主要语言的中级经验。当然,你不一定非要成为一名Web开发人员才能从《Python全栈安全》中学到知识,但对Web的基本了解会让你更容易理解《Python全栈安全》的后半部分。

也许你不构建或维护系统,而是需要测试它们。如果是这样,你会对要测试的内容有更深入的理解,但我甚至不会尝试教你如何测试。如你所知,这是两套不同的技能。

与一些关于安全的书籍不同,这里的示例都非从攻击者的角度分析问题。因此,这帮人学到的知识最少。如果说对他们有什么安慰,那就是在个别章节里,他们可能真会学到有用的内容。

《Python全栈安全》的编排方式

《Python全栈安全》分为3部分。

第Ⅰ部分“密码学基础”用几个密码学概念奠定基础。这些概念在第Ⅱ部分和第Ⅲ部分中会反复出现。

  • 第1章简要介绍安全标准、最佳实践和基本原则,进而设定预期。
  • 第2章直接介绍使用散列和数据完整性的密码学。在此过程中,介绍在《Python全栈安全》中出现的一小群人物。
  • 第3章介绍使用密钥生成和密钥散列进行数据身份验证。
  • 第4章涵盖任何安全书籍的两个必备主题:对称加密和机密性。
  • 第5章涵盖非对称加密、数字签名和不可否认性。
  • 第6章结合前面几章中的许多主要思想,形成了泛在网络协议,即传输层安全(Transport Layer Security)。

第Ⅱ部分“身份验证和授权”包含《Python全栈安全》中最具商业价值的内容,特点是提供大量与安全相关的常见用户工作流程的实际操作说明。

  • 第7章介绍HTTP会话管理和cookie,为后续章节中讨论的许多攻击做好准备。
  • 第8章是关于身份的内容,介绍用户注册和用户身份验证的工作流程。
  • 第9章介绍密码管理,也是最有趣的一章。内容在很大程度上建立在前几章的基础之上。
  • 第10章通过另一个关于权限和组的工作流程从身份验证过渡到授权。
  • 第11章以OAuth作为第Ⅱ部分的结束。OAuth是一种行业标准授权协议,旨在共享受保护的资源。

第Ⅲ部分“抵御攻击”可以说是《Python全栈安全》中最具敌意的部分,但更容易消化,也更令人兴奋。

  • 第12章深入研究操作系统,主题包括文件系统、外部可执行文件和shell。
  • 第13章教你如何使用各种输入验证策略防御大量的注入攻击。
  • 第14章完全集中在最臭名昭著的注入攻击上,即跨站脚本。你可能已经预见到这一点。
  • 第15章介绍内容安全策略。在某些方面,这可以被视为关于跨站脚本的附加章节。
  • 第16章涉及跨站请求伪造。该章将前几章中的几个主题与REST最佳实践相结合。
  • 第17章解释同源策略,以及为什么我们会不时地使用跨源资源共享来放宽这一策略。
  • 第18章以关于点击劫持的内容和一些使你的技能保持最新的资源结束《Python全栈安全》的讨论。

推荐理由

在当今这个数据为王、网络如织的时代,确保信息安全已成为所有行业的生命线。《Python全栈安全/网络空间安全丛书》犹如一座璀璨的灯塔,引领着开发者和安全专家们穿越复杂的安全迷雾,直抵防护技术的核心。这本书不仅仅是代码和技术的堆砌,它是一场思维的盛宴,一次深度与广度并重的安全之旅。

该系列丛书独树一帜地结合了Python这一强大而灵活的编程语言,与全栈安全及网络空间安全的深度实践,为读者构建了一个从基础到高级、理论到实战的全方位知识体系。无论你是想要入门安全领域的新人,还是希望深化技能的安全老手,这套书都能提供不可多得的宝贵资源。

书中不仅详细解析了Python在渗透测试、网络安全防御、加密解密、漏洞扫描与利用等关键领域的应用实例,还深入探讨了如何构建安全的Web应用程序、网络协议分析以及如何应对日益复杂的网络攻击策略。通过生动的案例分析、实战演练和最新安全工具的介绍,作者团队成功地将枯燥的安全理论转化为引人入胜的学习体验。

尤为值得一提的是,本书不仅聚焦技术层面,还重视培养读者的安全思维和合规意识,强调在快速变化的网络环境中持续学习和适应的重要性。这使得读者不仅能掌握解决当前问题的技能,更能具备预见和抵御未来安全威胁的能力。

总之,《Python全栈安全/网络空间安全丛书》是每一位致力于保护数字世界安全人士的必备宝典。它不仅能够极大地提升你的技术实力,更将激发你对安全领域无限探索的热情。在这条守护信息疆域的征途上,让这本书成为你最坚实的伙伴,共同筑起坚不可摧的数字防线。

写在最后

我是一只有趣的兔子,感谢你的喜欢!

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

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

相关文章

Java设计模式-活动对象与访问者

活动对象 Java设计模式中,活动对象是指一个对象始终处于活动的状态,该对象包括一个线程安全的数据结构以及一个活跃的执行线程。 如上所示,ActiveCreature类的构造函数初始化一个线程安全的数据结构(阻塞队列)、初始化…

IAR9.30安装和注册相关

下载解压licpatcher64工具,把licpatcher64.exe拷贝到IAR的安装目录中双击运行。 示例IAR9.30.1默认安装如下如下,一共三个分别拷贝运行,不要遗漏。 C:\Program Files\IAR Systems\Embedded Workbench 9.1\arm\bin C:\Program Files\IAR Syst…

DiffIR论文阅读笔记

ICCV2023的一篇用diffusion模型做Image Restoration的论文,一作是清华的教授,还在NIPS2023上一作发表了Hierarchical Integration Diffusion Model for Realistic Image Deblurring,作者里甚至有Luc Van Gool大佬。模型分三个部分&#xff0c…

无需安装的在线PS:打开即用

为什么想用在线PS网页版?Photoshop常用于平面设计,是不少设计师接触过的第一款设计软件。作为一款平面设计工具,ps功能太多,并且没有在线版,这不仅需要设计师花费时间学习软件,还需要设计师具备一定的设计能…

2023年全球DDoS攻击现状与趋势分析

天翼安全科技有限公司副总工程师、运营保障部总经理陈林表示,2023年扫段攻击频次快速增长,成为网络基础设施面临的最大威胁。为躲避防御,低速扫段攻击成为主流达到攻击总数的73.19%;43.26%的C段攻击持续时间小于5分钟,…

Science Advances|柔性超韧半导体纤维的大规模制备(柔性半导体器件/可穿戴电子/纤维器件/柔性电子)

北京大学 雷霆(Ting Lei)团队,在《Science Advances》上发布了一篇题为“Continuous production of ultratough semiconducting polymer fibers with high electronic performance”的论文。论文内容如下: 一、 摘要 共轭聚合物具有良好的光电特性,但其脆性和机械特性差,…

03 Prometheus+Grafana可视化配置

03 PrometheusGrafana可视化配置 大家好,我是秋意零。接上篇Prometheus入门安装教程 grafana官网下载安装包比较慢,如果没有魔法。可关注公众号【秋意零】回复101获取 Grafana官网下载:https://grafana.com/grafana/download 这里采用的二进制…

定个小目标之每天刷LeetCode热题(3)

这是一道简单题&#xff0c;我这里就只讲两种解法 第一种是数组加双指针&#xff0c;先遍历链表将值存到数组里&#xff0c;然后分别从数组两端进行一一比较判断是否满足回文&#xff0c;代码实现 class Solution {public boolean isPalindrome(ListNode head) {List<Inte…

重生奇迹mu卡智力的方法

1、准备3个号A打手,B智力MM,C随意。 2、使用C匹配组队,但是不能选择自动进入队伍。 3、用A申请C的队伍,但是C不做通过处理。 4、用A组B,用快捷键D的方式。 5、所谓的卡智力就是智力MM可以给打手加属性加血&#xff0c;但是并不在一个队伍里享受经验&#xff0c;适用于MM不是…

如何批量结构化分汇多工作表sheet?

目录 一、如遇合并表格&#xff0c;注意结构化二、确认主键&#xff0c;合并所有文件数据三、sheet2同理四、案例总结 如果遇到这样情形&#xff0c;多文件夹多文件&#xff0c;多工作表的分汇场景&#xff1b;可以参考以下方法解决。 一、如遇合并表格&#xff0c;注意结构…

Python 机器学习 基础 之 算法链与管道 【算法链与管道/预处理进行参数选择/构建管道/在网格搜索中使用管道】的简单说明

Python 机器学习 基础 之 算法链与管道 【算法链与管道/预处理进行参数选择/构建管道/在网格搜索中使用管道】的简单说明 目录 Python 机器学习 基础 之 算法链与管道 【算法链与管道/预处理进行参数选择/构建管道/在网格搜索中使用管道】的简单说明 一、简单介绍 二、算法链…

「异步魔法:Python数据库交互的革命」(一)

Hi&#xff0c;我是阿佑&#xff0c;今天将和大家一块打开异步魔法的大门&#xff0c;进入Python异步编程的神秘领域&#xff0c;学习如何同时施展多个咒语而不需等待。了解asyncio的魔力&#xff0c;掌握Async SQLAlchemy和Tortoise-ORM的秘密&#xff0c;让你的数据库操作快如…

2024广东省赛 G.Menji 和 gcd

题目 #include <bits/stdc.h> using namespace std; #define int long long #define pb push_back #define fi first #define se second #define lson p << 1 #define rson p << 1 | 1 #define ll long long const int maxn 1e6 5, inf 1e12, maxm 4e4 …

脑机接口:是现代医学的外挂,更是瘫痪病人的豪赌

5 月 17 日&#xff0c;马斯克公开表示&#xff0c;继今年年初首次成功将大脑芯片植入患者大脑后&#xff0c;Neuralink 正在寻找第二位受试者接受这项手术。 5 月 20 日&#xff0c;美国食品药品监督管理局 (FDA) 批准了马斯克的 Neuralink 公司为第二位患者植入脑芯片&#…

超详细介绍基于微调 Faster R-CNN实现海上航拍图像中检测小物体-含源码与数据集免费下载

在航拍图像中检测小物体,尤其是对于海上救援等关键应用而言,是一项独特的挑战。及时检测水中的人可能意味着生死之间的差别。我们的研究重点是微调 Faster R-CNN(一种强大的两阶段物体检测器),以满足这一重要需求。 我们研究的核心是SeaDroneSee 数据集,这是一组重要的图…

Springboot项目搭建 jdk1.8

1.idea创建项目 2.项目配置 maven 编辑项目编码 删除无用文件 修改配置文件后缀&#xff0c;设置数据库 spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl:jdbc:mysql://localhost:3306/honey2024?useSSLfalse&useUnicodetrue&characterEncodingUT…

随手记:多行文本域存数据有换行,回显数据换行展示

1.在新增的时候存储数据 <el-input type"textarea"v-model"XXXX"></el-input> 2.详情页返回的数据&#xff1a; replace一顿操作确实复杂 最快的方法直接写个样式:style"white-space: pre-line" 即可行内或者class样式都可以 …

windows 下载redis (通过redis-server.exe启动服务)

下载链接&#xff1a; https://github.com/MicrosoftArchive/redis/releases 启动&#xff1a; 查看&#xff1a; 人工智能学习网站 https://chat.xutongbao.top

在项目中集成Web端数据库操作:推荐工具一览

在项目中集成Web端数据库操作&#xff1a;推荐工具一览 博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍…

Excel快速判断大量身份证性别,VBS代码

身份证判断性别的原理就是,身份证倒数第二位是单数表示是男的,单数是女的 可以用IF公式来判断,但是需要下拉,如果几百上千条数据还好,要是上万就不好拉取了,如果数据太多,可以用VBA代码判断 IF(MOD(VALUE(MID(A1,17,1)),2)0,"女","男") 原理:MID(A1,17,1…