《白帽子讲Web安全》- 学习笔记
一、为何要了解Web安全
最近加入新公司后,公司的官网突然被Google标记为了不安全的诈骗网站,一时间我们信息技术部门成为了众矢之的,虽然老官网并不是我们开发的(因为开发老官网的前辈们全都跑路了)。我们花了很多时间做Web安全扫描以及修复,在检查和修复过程中,发现老系统的代码的不可维护性(再次说明整洁代码之道Clean Code的重要性)及安全性(同时也说明了Web安全的重要性)。

修复之后,向Google提出了申诉,漫长的等待(1~2天对于公司的官网来说就是Money啊!)后Google放开了。当我们庆幸终于把该死的老官网的安全问题解决了的时候,过了几天后又被Google加入黑名单了,WTF!于是,再次安全扫描,排除一切可能的原因,做好备用方案,再次进入安全修复迭代...
对于我们来说,这次的经验让我意识到,不遵守整洁代码之道和安全系统之道的系统就像一颗定时炸弹,你不知道它什么时候就会爆炸又或者是虚晃一枪,又让我想起整洁代码之道一书的封面:

上面这张图是M104:草帽星系,其核心是一个质量超大的黑洞,有100万个太阳那么重,环绕着M104的光环就像一顶墨西哥草帽,仿佛经历了大爆炸之后碎片四溅的产物。联系到我们所经历过的没由整洁代码风格各异不可维护的软件项目,其实当你接手时之前的代码都是一个个的黑洞,存在着某天会定时爆发的风险,而当它真正爆发时,接手这个项目的所有人又或者没有接手过的人都会因此遭殃。
因此,作为一名Web系统开发者,不但要追求整洁代码,也要了解Web安全知识。目前系统讲解Web安全的书籍里,阿里巴巴高级技术专家吴翰清的这本《白帽子讲Web安全》是评分较高的一本(豆瓣评分7.4),虽然现在看来有点过时(很多的漏洞案例都早已被修复),但是基础的知识点都有覆盖,是建立安全思维的好书!此外,它对于安全开发流程与运营的介绍,同样具有深刻的行业指导意义。所以,我快速地学习了一遍,做了一些笔记与各位分享。
二、精华内容导图笔记
完整的笔记导图在线浏览地址:https://www.processon.com/view/5c11e98ae4b0ed122da3f749,下面为了阅读体验,分成3个部分来显示。
2.1 客户端脚本安全

2.2 服务端应用安全

2.3 安全运营体系建设

三、一些安全扫描工具
3.1 Sucuri SiteCheck
Sucuri SiteCheck是一个免费的在线扫描网站,可以提供基础的Web安全扫描功能,它会根据你输入的网址去爬内容然后匹配安全规则,给出安全漏洞建议,如下图所示:

扫描后的结果如下图所示:可以看到,我们得网站没有Critical的安全漏洞,也没有被各大安全体系(例如Google安全浏览体系)列入黑名单。

当然,还是有一些需要改进的地方,它给你列出来了:比如没有为资源文件设置HTTPS重定向,导致在HTTPS网站中使用了HTTP的资源。

又如下图,在HTTP Header中缺少安全性的配置,可能会遭受XSS攻击。

3.2 Acunetix
Acunetix是一款优秀的网络漏洞扫描软件,它可以检测网站的安全漏洞。它可以检查Web应用程序中的漏洞,如SQL注入、跨站脚本攻击、身份验证页上的弱口令长度等。它拥有一个操作方便的图形用户界面,并且能够创建专业级的Web站点安全审核报告。But,Acunetix是一款商业软件,需要花钱购买License。当然,你也可以百度一下,毕竟大天朝,你懂得,不过还是支持正版!
安装完成后,你就可以进入https://localhost:3443/#/login/登录进去了。
下面演示一个基本的扫描过程:
Step1.添加扫描目标

这里选择Fast Speed & Critical

Step2.点击Scan按钮设置扫描选项,选择Full Scan & Developer Report,然后点击“Create Scan”开始扫描

Step3.此时可以点击Scan菜单进入扫描任务列表,如下图所示:你可以从Vulerabilities列看到漏洞数量,重点关注红色背景,它们是高危漏洞,必须得解决的!

Step4.你也可以点击某个Scan Item,进入Dashboard查看更详细的信息

Step5.你可以从右上方的通知栏中点击下载Report,下载下来后打开pdf后的效果如下图所示:

参考资料

吴翰清,《白帽子讲Web安全》
同时,在学习《白帽子讲Web安全》的同时参考了以下资料,觉得不错作为推荐:
(1)很好玩的博客,《XSS攻击原理及防御措施》
(2)很好玩的博客,《CSRF攻击原理及防御措施》
(3)海角在眼前,《前后端安全系列博文》=> 包含了XSS,CSRF,Web劫持等内容
(4)张善友,《保护ASP.NET应用免受CSRF攻击》
《白帽子讲Web安全》- 学习笔记的更多相关文章
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- 2014年暑假c#学习笔记目录
2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
- seaJs学习笔记2 – seaJs组建库的使用
原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...
- CSS学习笔记
CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...
- HTML学习笔记
HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...
- DirectX Graphics Infrastructure(DXGI):最佳范例 学习笔记
今天要学习的这篇文章写的算是比较早的了,大概在DX11时代就写好了,当时龙书11版看得很潦草,并没有注意这篇文章,现在看12,觉得是跳不过去的一篇文章,地址如下: https://msdn.micro ...
- ucos实时操作系统学习笔记——任务间通信(消息)
ucos另一种任务间通信的机制是消息(mbox),个人感觉是它是queue中只有一个信息的特殊情况,从代码中可以很清楚的看到,因为之前有关于queue的学习笔记,所以一并讲一下mbox.为什么有了qu ...
随机推荐
- TestNG exception
以下内容引自: https://howtodoinjava.com/testng/testng-expected-exception-and-expected-message-tutorial/ Ho ...
- 【BZOJ 3561】 DZY Loves Math VI
题目: 给定正整数n,m.求 题解: 水题有益身心健康.(博客园的辣鸡数学公式) 其实到这我想强上伯努利数,然后发现$n^2$的伯努利数,emmmmmm 发现这个式子可以算时间复杂度,emmmmm ...
- BZOJ_2721_[Violet 5]樱花_数学
BZOJ_2721_[Violet 5]樱花_数学 Description Input Output $\frac{1}{x}+\frac{1}{y}=\frac{1}{m}$ $xm+ym=xy$ ...
- Django中Middleware中间件
Django中Middleware中间件 1 Middleware中间件概述 django中间middleware实质就是一个类,django会根据自己的规则在合适的时机执行中间件相应的方法.实际上当 ...
- Linux的内存分页管理
作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁转载 内存是计算机的主存储器.内存为进程开辟出进程空间,让进程在其中保存数据.我将从内存的物理特性出发,深入到内存 ...
- c#Socket服务器与客户端的开发(1)
上个项目中用到了Socket通讯,项目中直接借助SuperSocket实现,但是我觉得这毕竟是一个我没接触过的东西,所以也顺便学习了一下原生socket的使用,做了一个socket服务器与客户端的开发 ...
- 分布式系统关注点(15)——「水平&垂直切分」详解
如果第二次看到我的文章,欢迎右侧扫码订阅我哟~
- python接口自动化(十七)--Json 数据处理---一次爬坑记(详解)
简介 有些 post 的请求参数是 json 格式的,这个前面发送post 请求里面提到过,需要导入 json模块处理.现在企业公司一般常见的接口因为json数据容易处理,所以绝大多数返回数据也是 j ...
- python中线程和进程(一)
目录 进程和线程 Python中的线程 1. Thread类 2. 线程的启动 3. 线程的传参 4. 线程的属性和方法 5. daemon线程和non-daemon线程 6. join方法 7. 定 ...
- Unity 用ml-agents机器学习造个游戏AI吧(2)(入门DEMO)
前言: 上一篇博文已经介绍了Unity ml-agents的环境配置(https://www.cnblogs.com/KillerAery/p/10629963.html)了. 个人建议先敲demo再 ...