书名:白帽子讲 Web 安全
用时:五天
星级:★★★★半
简评:这是一本入门级别讲解 Web 安全的书。

这本书应该是和《黑客攻防技术宝典:浏览器实战篇》相似的,我最初看了黑客宝典的大概 20%,由于内容偏深,就转来先看白帽子,相比之下,白帽子更适合对 Web 安全不甚了解的小白。


第一篇:Web 安全之白帽子兵法

黑名单与白名单原则
设计安全方案时,最基本最重要的原则就是黑名单与白名单原则,要求我们更多的使用白名单原则,比如预防 XSS 攻击的字串检查,应该设计为允许使用 a、img等标签(白名单),而不是禁止使用 script 等标签(黑名单)。

纵深防御原则
这个原则是说要在不同层次不同方面综合实施对应的安全方案,比如网络环境、数据库、OS 、Web 应用等不同方面,比如用户输入、数据展示等不同层次,考虑若已被入侵怎样最小化损失。

数据与代码分离原则
数据与代码高耦合,就非常容易产生注入漏洞,XSS、SQL 等都是因为这个原因。SQL 注入是由于 SQL 语句与用户数据字符串拼接造成,若使用 SQL 参数化查询(预编译 SQL)则分离了数据与代码。

不可预测性原则
攻击者经常会通过一些规律找到漏洞,比如 id 顺次递增,攻击者知道了其中一个 id 就可能会对所有 id 发起攻击。这时可使用 token、随机、加密等实现不可预测性。

第二篇:客户端安全

这一篇主要讲了 XSSCSRF点击劫持 等浏览器中三种最常见的攻击(我是看了黑客宝典的这部分感到非常吃力才转来看白帽子),详细而直白,对每种攻击从攻击原理、简单的例子,写到防御方案,读起来很顺畅。对 HttpOnly 、CSP 、X-frame-options 、Referer 等一些安全相关的 HTTP 头部 也有了更深的认识。这一篇也是我最想看到的内容,边读边写代码实践边查阅相关资料,很有感觉。

第三篇:服务器安全

作为前端小白,对于服务器安全,我会更加不了解一些。这一篇引用了较多的 PHP 及其他服务端语言代码,但是看懂还是可以的。收获最大的是学习了认证与授权、DDOS 攻击、注入攻击。

认证与授权
在认证与授权这里,结合阮一峰老师的博文《理解OAuth 2.0》搞明白了 openID 和 OAuth 的区别于联系:openID 解决的是认证问题,OAuth 解决的是授权问题。比如我们可以使用微博的 OAuth 授权其他网站访问个人资料或者发微博,而 openID 表明用户的唯一标识,用户可以把 openID 告诉第三方网站,以表明自己是通过微博登陆的。

DDOS 攻击
最难解决也无法根治的安全问题,DDOS 攻击的本质是利用合理的请求造成资源过载,进而导致服务不可用。一般的解决方法可以有 限制账户频率、限制 IP 频率、验证法等。

SYN Blood
想单独说一下 SYN Blood。因为最近听到了一个很好玩的关于面试的问题,是说几年前面试官一般只问 TCP 的三次握手,后来又问了四次挥手,后来我们都会了,就开始问为什么需要三次握手?为什么挥手又需要四次?后来我们又会了,面试官又开始问 TCP 这样设计有什么缺陷?当然,终极问法是:如果可以,怎样改进 TCP 可以解决/稍缓现在的麻烦/缺陷?没有了解过 TCP 的面试者崩溃中...

言归正传,SYN Blood 就是由于客户端向服务端发送 SYN 包之后不再应答,服务端返回的 SYN/ACK 包找不到终点,服务端就会重试 3~5 次发包并等待一个 SYN Time(30s ~ 2min),如果同时出现大量这种请求,就会消耗服务端非常多的资源来处理这种“半连接”状态,于是,出现了服务器拒绝服务。

现在没有很好的方案可以杜绝 DDOS 攻击。可以参考博文:
TCP三次握手和四次挥手以及缺陷(详细): http://blog.csdn.net/hacker00011000/article/details/52319111

第四篇:互联网公司安全运营

贴目录:把安全运营起来、漏洞修补流程、安全监控、入侵检测、紧急响应流程等


这本书的前三篇满满的干货,非常值得一看。当然感觉有些内容仍然有所过时(大概 8%?)。另一本去年图灵出版的新书《黑客攻防技术宝典:浏览器实战篇》相较要稍难一点,但是里面的内容却也更新更全面,毛主席说得好,一切都是纸老虎,现在可以去看了 :)