《白帽子讲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 ...
随机推荐
- 一次完整的HTTP网络请求过程详解
0. 前言 从我们在浏览器的地址栏输入http://blog.csdn.net/seu_calvin后回车,到我们看到该博客的主页,这中间经历了什么呢?简单地回答这个问题,大概是经历了域名解析.TC ...
- int i=0;i=i++
package algorithms.com.guan.javajicu; public class Inc { public static void main(String[] args) { In ...
- BZOJ_5180_[Baltic2016]Cities_ 斯坦纳树
BZOJ_5180_[Baltic2016]Cities_ 斯坦纳树 题意: 给定n个点,m条双向边的图.其中有k个点是重要的.每条边都有一定的长度. 现在要你选定一些边来构成一个图,要使得k个重要的 ...
- BZOJ_1901_Zju2112 Dynamic Rankings_树状数组+主席树
BZOJ_1901_Zju2112 Dynamic Rankings_树状数组+主席树 题意: 给定一个含有n个数的序列a[1],a[2],a[3]……a[n],程序必须回答这样的询问:对于给定的i, ...
- CentOS 7下单机部署RabbltMQ环境的操作记录
一. RabbitMQ简单介绍 在日常工作环境中,你是否遇到过两个(多个)系统间需要通过定时任务来同步某些数据?你是否在为异构系统的不同进程间相互调用.通讯的问题而苦恼.挣扎?如果是,那么恭喜你,消息 ...
- 原生wcPop.js消息提示框(移动端)、内含仿微信弹窗效果
wcPop.js移动端消息对话框插件是之前的wxPop.js的升级版,优化了js和css,并且新增了仿微信弹窗效果, 是一款含有多种情景模式的原生模态消息对话框代码,可用于替代浏览器默认的alert弹 ...
- python的知识统计笔记
python的发展
- 【STM32H7教程】第4章 STM32H7工程模板建立(MDK5)
完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980 第4章 STM32H7工程模板建立(MDK5) 本章 ...
- SSRS报表服务随笔(rdl报表服务)-报表结构与样式
设计rdl报表,比设置HTML页面简单多了,Reporting报表分为页眉,页脚,主体三个部分 rdl文件实际是xml结构的文件,具体是什么语言呢,很抱歉,这点我还不能回复,在我看来,是由固定节点的x ...
- Vue 进阶之路(七)
之前的文章我们对 vue 的列表输出做了介绍,本章我们来看一下 vue 的组件 component. <!DOCTYPE html> <html lang="en" ...