一、为何要了解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攻击

作者:周旭龙

出处:http://edisonchou.cnblogs.com

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。

《白帽子讲Web安全》- 学习笔记的更多相关文章

  1. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  2. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  3. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  4. 2014年暑假c#学习笔记目录

    2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...

  5. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

  6. seaJs学习笔记2 – seaJs组建库的使用

    原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...

  7. CSS学习笔记

    CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...

  8. HTML学习笔记

    HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...

  9. DirectX Graphics Infrastructure(DXGI):最佳范例 学习笔记

    今天要学习的这篇文章写的算是比较早的了,大概在DX11时代就写好了,当时龙书11版看得很潦草,并没有注意这篇文章,现在看12,觉得是跳不过去的一篇文章,地址如下: https://msdn.micro ...

  10. ucos实时操作系统学习笔记——任务间通信(消息)

    ucos另一种任务间通信的机制是消息(mbox),个人感觉是它是queue中只有一个信息的特殊情况,从代码中可以很清楚的看到,因为之前有关于queue的学习笔记,所以一并讲一下mbox.为什么有了qu ...

随机推荐

  1. Python startswith()方法

    描述 Python startswith() 方法用于检查字符串是否是以指定子字符串开头,如果是则返回 True,否则返回 False.如果参数 beg 和 end 指定值,则在指定范围内检查. 语法 ...

  2. javascript进阶

    BOM操作 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <met ...

  3. 【ShoppingWebCrawler】-基于Webkit内核的爬虫蜘蛛引擎概述

    写在开头 在各个电商平台发展日渐成熟的今天.很多时候,我们需要一些平台上的基础数据.比如:商品分类,分类下的商品详细,甚至业务订单数据.电商平台大多数提供了相应的业务接口.允许ISV接入,用来扩展自身 ...

  4. DOM常见操作

    一.查找 1.直接查找 document.getElementById           根据ID获取一个标签 document.getElementsByName         根据name属性 ...

  5. instrument(2)

    学习了instrument之后试着自己写点东西,上一篇的例子中使用的是asm,毕竟是面向字节码的,api还是比较复杂的.其实有时候的需求很简单,无非就是看下类里的方法啊之类的.javassist是基于 ...

  6. stm.go

    package) ].ModRevision } func,, ,, ].ModRevision ].Value) }

  7. BZOJ_1579_[Usaco2009 Feb]Revamping Trails 道路升级_分层图最短路

    BZOJ_1579_[Usaco2009 Feb]Revamping Trails 道路升级_分层图最短路 Description 每天,农夫John需要经过一些道路去检查牛棚N里面的牛. 农场上有M ...

  8. 猴子 JDFZ模拟赛

    猴子(弱) Description 话说NP做梦,梦见自己变成了一只猴子,并且有很多香蕉树,这些香蕉树都种在同一直线上,而NP则在这排香蕉树的第一棵树上.NP当然想吃尽量多的香蕉,但它又不想在地上走, ...

  9. github上传文件的几句命令行

    1.首先进入要上传的本地目录,右键打开git命令行. 2.执行指令:git init    初始化本地仓库,这是会看到多了一个.git文件夹(如果没看到那就是电脑隐藏了). 3.执行命令:git ad ...

  10. 不使用SpringBoot如何将原生Feign集成到Spring中来简化http调用

    在微服务架构中,如果使用得是SpringCloud,那么只需要集成SpringFeign就可以了,SpringFeign可以很友好的帮我们进行服务请求,对象解析等工作. 然而SpingCloud是依赖 ...