《白帽子讲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 ...
随机推荐
- python爬取所有微信好友的信息
''' 爬取所有T信好友的信息 ''' import itchat from pandas import DataFrame itchat.login() friends=itchat.get_fri ...
- poj~1236 Network of Schools 强连通入门题
一些学校连接到计算机网络.这些学校之间已经达成了协议: 每所学校都有一份分发软件的学校名单("接收学校"). 请注意,如果B在学校A的分发名单中,则A不一定出现在学校B的名单中您需 ...
- I/O------字节输出流
package io.day03; import java.io.FileOutputStream; import java.io.OutputStream; public class day03ou ...
- 阿里巴巴的开源项目Druid(关于数据库连接)
1 配置 和dbcp类似,druid的常用配置项如下 配置 缺省值 说明 name 配置这个属性的意义在于,如果存在多个数据源,监控的时候可以通过名字来区分开来.如果没有配置,将会生成一个名字,格 ...
- 使用Eclipse远程调试
在一般的开发中,有事因为项目需要,测试环境是在Linux下,这是如果出现异常或者bug,调试起来都是很费劲的,如果你还在为这个头疼,那就好好看接下来的总结 1,启动改程序时,不论是脚本启动,还是tom ...
- C++中的静态类型和动态类型的定义
当我们使用存在继承关系的类型时,必须将一个变量或者其他表达式的静态类型与该表达式表示对象的动态类型区分开来. 表达式的静态类型在编译时总是已知的,它是变量声明时的类型或者表达式生成的类型: 而动态类型 ...
- BZOJ_3996_[TJOI2015]线性代数_最大权闭合子图
BZOJ_3996_[TJOI2015]线性代数_最大权闭合子图 Description 给出一个N*N的矩阵B和一个1*N的矩阵C.求出一个1*N的01矩阵A.使得 D=(A*B-C)*A^T最大. ...
- 自动化测试框架 hierarchyViewer、Uiautomator、Appium的区别比较!
一.HierarchyViewer: 优点:1)能够可视化的角度直观地获得UI布局设计结构和各种属性的信息 2)使用hierarchyviewer.bat来检索手机界面布局 缺点:1)稳定性差,出现过 ...
- 谈谈网络分层和IP
概述 在计算机网络这门课中,往往是将各层协议拆开一章一章的讲,每层协议是干嘛的,都各种怎么工作的.但如果有人问,这些协议之间怎么协调工作,有什么关系,往往处于懵逼状态. 网络分层 网络为什么分层,其实 ...
- safari 浏览器 input textarea select 等不能响应用户输入
解决办法 -webkit-user-select:auto; /*webkit浏览器*/ user-select:auto; -o-user-select:auto; -ms-user-select: ...