又是厚厚的一本书,为了不弄虚做假,只得变更计划,这一次调整为读前三章,安全世界观,浏览器安全和xss。其它待用到时再专门深入学习。

吴翰清是本书作者,icon是一个刺字,圈内人称道哥。曾供职于阿里,后创业,最后回归阿里。更多可以参考这里:

https://www.secpulse.com/archives/65276.html

安全世界观

所有术的层面最后都回归到道的层面,所以开篇的章节,作者从道讲起。

这一部分需要思考的的第一个问题是:我们为什么要研究web安全?

我心里在想,和这个类似,区块链安全需要我们关注吗,为什么?

第二个问题:白帽子的工作和黑帽子有何不同?我们要像黑帽子学习什么?

第三个问题:安全的本质是什么?

第四个问题:有没有一劳永逸的安全方案?

第五个问题:请谈一谈你对安全三要素的理解。

第六个问题:请谈一谈安全评估做什么?怎么做?

第七个问题:白帽子在设计安全方案时,有哪些原则可以参考?它们分别应对或解决哪一方面的问题。

每一个问题都够写一篇小论文了。

浏览器安全

同源策略

同源策略限制来自不同源的document或脚本对当前document或脚本进行修改。

影响源的因素有协议、端口、域名。

script、img、iframe标签却可以跨域加载资源,实际上它们由浏览器发起了一次get请求,JavaScript不同于XMLhttprequest,不能读写返回的内容。

除了DOM,cookie,xmlhttprequest受同源策略限制,一些浏览器加载的第三方插件也有各自的同源策略。

浏览器沙箱

浏览器沙箱主要是通过资源隔离,使得对浏览器所在的本机进行保护。但是现实中,也有人通过浏览器插件漏洞来绕过。

恶意网址拦截

浏览器厂商和安全厂商合作,对恶意网址给用户提醒。phishtank是一个免费提供恶意网址的机构,ev ssl是一种安全增强型证书。

浏览器新技术需要考虑的安全

用户友好的功能需要关注,例如\和?的处理。扩展和插件的安全。

XSS跨站脚本攻击

XSS概念和分类

前两章基本是道的层面,这一章就开始更多关注术的层面。XSS英文是Cross Site Script,所谓的XSS攻击是指黑客通过html注入,篡改了网页,插入了恶意脚本,从而在用户浏览时控制用户浏览器的一种攻击。

<script>alert(CSS)</script>只是我们验证是否有xss的一种办法,而真正的payload会实现更多邪恶的功能。

xss传统上分为反射型和存储型,DOM型,DOM其实也是一种反射型。

XSS 攻击

XSS payload

这一节先介绍了cookie劫持,然后列举了通过构造get和post请求结合XSS来获取qq邮箱邮件列表,XSS钓鱼,识别用户浏览器,识别用户软件,识别用户曾经访问过的网站,获取用户真实IP等场景。

XSS攻击平台

常见的平台有Attack Api,BeEF,XSS-Proxy。还有书中没提到的,余弦的XSS'OR,每天可以测试一次攻击。

工具平台可以为我们演示XSS危害提供帮助。

XSS蠕虫

书中提到了MySpace曾经的Samy蠕虫。真正可怕的蠕虫会悄无声息的窃取用户秘密。

XSS构造技巧

常见技巧有利用编码规则、突破长度限制、利用base标签、window.name。此外,不要忽视flash、一些貌似只能攻击自己的XSS如何利用、JS框架安全问题。

XSS与各种编码请看这里:

https://blog.csdn.net/abc_ii/article/details/16891689

XSS防御

HttpOnly

通过设置cookie的httponly属性,抵御xss后的cookie劫持攻击。但是它并没有解决XSS防御。

输入检查

输入检查主要是对特殊字符如<,>,'等进行过滤。网上有很多XSS filter。

但是xss filter有可能对语境理解不充分,发生漏报或者转义了用户数据。

输出检查

PHP和JS中都有HtmlEncode功能相关的函数。但这并不意味着就可以完全抵御XSS。书中举了一例,由于html parser优于Javascript Parser执行,还是会造成XSS。

正确防御思路

这一节(书中3.3.4)列举了各种可能的html输出中,如何防御,如何攻击。

网上应该有不少cheatsheet,也可以搜索XSS cheatsheet了解更多。

处理富文本

如果网页中允许用户提交自定义的html代码就要关注这一节。

防御DOM based XSS

主要是在javascript输出html时,看输出是到内容或属性,还是事件或脚本。分别执行不同的encode。前者htmlencode,后者javascriptencode。

业务视角看XSS

存储型高于反射型,有用户互动地方都有风险,PageView高的地方重点关注。

实验环境

1、一个浏览器

能够调试Javascript的浏览器都应该可以。

2、Javascript调试工具

书中提到的有Firebug,Fiddler,IE8开发者工具。

3、JavaScript调试环境(内附JS学习网站)

http://lixiaolai.com/2016/07/31/makecs-simplest-js-dev-environment/

其它资源

在线java调试工具

https://jsfiddle.net

BeeF

http://www.freebuf.com/sectool/4799.html

Attackapi框架

http://www.cnblogs.com/milantgh/p/3645166.html

XSS cheatsheet

sec-wiki查找XSS

后续学习

如果要深入XSS,对JS必须深入学习。

白帽子讲web安全读后感的更多相关文章

  1. 读>>>>白帽子讲Web安全<<<<摘要→我推荐的一本书→1

      <白帽子讲Web安全>吴翰清著 刚开始看这本书就被这本书吸引,感觉挺不错,给大家推荐下,最近读这本书,感觉不错的精华就记录下, 俗话说>>>好脑袋不如一个烂笔头< ...

  2. 《白帽子讲Web安全》- 学习笔记

    一.为何要了解Web安全 最近加入新公司后,公司的官网突然被Google标记为了不安全的诈骗网站,一时间我们信息技术部门成为了众矢之的,虽然老官网并不是我们开发的(因为开发老官网的前辈们全都跑路了). ...

  3. 白帽子讲web安全——认证与会话管理

    在看白帽子讲web安全,刚好看到认证与会话管理:也就是我们在平常渗透测试中遇到最多的登录页面,也即是用户名和密码认证方式,这是最常见的认证方式. 了解两个概念:认证和授权 1):认证的目的是为了认出用 ...

  4. 白帽子讲web安全——一个安全解决方案的诞生细节

    1.白帽子:做安全的人.主要做的事,防御,是制定一套解决攻击的方案.而不是只是解决某个漏洞. 2.黑帽子:现在说的黑客.让web变的不安全的人.利用漏洞获取特权.主要做的事,攻击,组合各种方法利用漏洞 ...

  5. 读书笔记——吴翰清《白帽子讲Web安全》

    目录 第一篇 世界观安全 一 我的安全世界观 第二篇 客户端脚本安全 一 浏览器安全二 跨站脚本攻击(XSS)三 跨站点请求伪造(CSRF)四 点击劫持(ClickJacking)五 HTML5 安全 ...

  6. 白帽子讲Web安全2.pdf

    XSS构造技巧 利用字符编码: var redirectUrl="\";alert(/XSS/);"; 本身没有XSS漏洞,但由于返回页面是GBK/GB2312编码的“% ...

  7. 白帽子讲Web安全1.pdf

    第一章 我的安全世界观 安全是一个持续过程 6种威胁:Spoofing(伪装).Tampering(篡改).Repudiation(抵赖).InformationDisclosure(信息泄漏).De ...

  8. 白帽子讲web安全——白帽子兵法(设计安全方案中的技巧)

    1.Secure By Default原则 白名单:筛选出被允许的,屏蔽其他. 黑名单:屏蔽可能造成的威胁. 2.XSS和SSH XSS攻击:跨站脚本(cross site script)攻击是指恶意 ...

  9. 《白帽子讲web安全》——吴瀚清 阅读笔记

    浏览器安全 同源策略:浏览器的同源策略限制了不同来源的“document”或脚本,对当前的“document”读取或设置某些属性.是浏览器安全的基础,即限制不同域的网址脚本交互     <scr ...

随机推荐

  1. hdu2022

    #include <stdio.h> #include <math.h> #define here puts("go,go,go!\n") int main ...

  2. BZOJ 2946 [Poi2000]公共串 ——后缀自动机

    任意选择一个串作为模式串,构建出后缀自动机. 然后用其他的串在后缀自动机上跑匹配. 然后就到了理解后缀自动机性质的时候. 在某一个节点的最大值是可以沿着parent树上传的. 然后用dp[i][j]表 ...

  3. POJ 2409 Let it Bead ——Burnside引理

    [题目分析] 裸题直接做. 一个长度为n,颜色为m的环,本质不同的染色方案是多少. 数据范围比较小,直接做就好了. [代码] #include <cstdio> #include < ...

  4. 使用反射获取类中的属性(可用于动态返回PO类的列,当做表格的表头)

    //利用反射取类中的属性字段 try { Class clazz = Class.forName("houji.bean.model.TaskModel"); Field[] fi ...

  5. Codevs 2956 排队问题

    2956 排队问题 时间限制: 1 s 空间限制: 32000 KB 题目等级 : 黄金 Gold 题目描述 Description 有N个学生去食堂,可教官规定:必须2人或3人组成一组,求有多少种不 ...

  6. 标准C程序设计七---26

    Linux应用             编程深入            语言编程 标准C程序设计七---经典C11程序设计    以下内容为阅读:    <标准C程序设计>(第7版) 作者 ...

  7. Android UI自定义Spinner下拉框(用popuwindow实现)-转

    定义出第一个图片的布局和弹出框(一个listView)的布局,,这里就不在多说了~ListView需要自己定义一个MyspinnerAdapter~做好这些准备之后,就是弹出框的实现了~  prote ...

  8. 八皇后问题Python实现

    八皇后问题描述 问题: 国际象棋棋盘是8 * 8的方格,每个方格里放一个棋子.皇后这种棋子可以攻击同一行或者同一列或者斜线(左上左下右上右下四个方向)上的棋子.在一个棋盘上如果要放八个皇后,使得她们互 ...

  9. Iass、Pass、SasS三种云服务区别?

    Iass.Pass.SasS三种云服务区别 我们可以把云计算理解成一栋大楼,而这栋楼又可以分为顶楼.中间.低层三大块.那么我们就可以把Iass(基础设施).Pass(平台).Sass(软件)理解成这栋 ...

  10. Centos常用命名

    1.关机 (系统的关机.重启以及登出 ) 的命令 shutdown -h now 关闭系统(1) init 0 关闭系统(2) telinit 0 关闭系统(3) shutdown -h hours: ...