Web之困:现代Web应用安全指南

出版社:机械工业出版社
出版日期:2013-10
ISBN:9787111439462
作者:(美)Michal Zalewski
页数:280页

内容概要

国际一流信息安全技术专家,被誉为IT安全领域最有影响力的11位黑客之一。曾发现过数以百计的网络安全漏洞,并发表了多篇具有重大影响的研究论文。对现代Web浏览器有非常深入的研究,目前就职于Google,基于其在Web安全方面的丰富经验帮助Google增强包括Chrome浏览器在内的一系列产品的安全性。此外,他还是一位开源软件贡献者,是著名开源软件p0f、skipfish、ratproxy等的开发者。

书籍目录

译者序
前 言
第1章 web应用安全 / 1
1.1 信息安全速览 / 1
1.1.1 正统之道的尴尬 / 2
1.1.2 进入风险管理 / 4
1.1.3 分类学的启发 / 5
1.1.4 实际的解决之道 / 6
1.2 web的简明历史 / 7
1.2.1 史前时期的故事: 1945~1994年 / 8
1.2.2 第一次浏览器大战:1995~1999年 / 10
1.2.3 平淡期:2000~2003年 / 11
1.2.4 web 2.0 和第二次浏览器大战:2004年之后 / 12
1.3 风险的演化 / 13
1.3.1 用户作为安全风险的一个环节 / 14
1.3.2 难以隔离的web运行环境 / 14
1.3.3 缺乏统一的格局 / 15
1.3.4 跨浏览器交互:失败的协同 / 16
1.3.5 客户端和服务器端界限的日益模糊 / 17
第一部分 对web的解剖分析
第2章 一切从url开始 / 20
2.1 url的结构 / 21
2.1.1 协议名称 / 21
2.1.2 层级url的标记符号 / 22
2.1.3 访问资源的身份验证 / 22
2.1.4 服务器地址 / 23
2.1.5 服务器端口 / 24
2.1.6 层级的文件路径 / 24
2.1.7 查询字符串 / 25
2.1.8 片段id / 25
2.1.9 把所有的东西整合起来 / 26
2.2 保留字符和百分号编码 / 28
2.3 常见的 url协议及功能 / 33
2.3.1 浏览器本身支持、与获取文档相关的协议 / 33
2.3.2 由第三方应用和插件支持的协议 / 33
2.3.3 未封装的伪协议 / 34
2.3.4 封装过的伪协议 / 34
2.3.5 关于协议检测部分的结语 / 35
2.4 相对url的解析 / 35
2.5 安全工程速查表 / 37
第3章 http协议 / 38
3.1 http 基本语法 / 39
3.1.1 支持http/0.9的恶果 / 40
3.1.2 换行处理带来的各种混乱 / 41
3.1.3 经过代理的http请求 / 42
3.1.4 对重复或有冲突的头域的解析 / 44
3.1.5 以分号作分隔符的头域值 / 45
3.1.6 头域里的字符集和编码策略 / 46
3.1.7 referer头域的表现 / 48
3.2 http 请求类型 / 48
3.2.1 get / 49
3.2.2 post / 49
3.2.3 head / 49
3.2.4 options / 50
3.2.5 put / 50
3.2.6 delete / 50
3.2.7 trace / 50
3.2.8 connect / 50
3.2.9 其他 http 方法 / 51
3.3 服务器响应代码 / 51
3.4 持续会话 / 53
3.5 分段数据传输 / 55
3.6 缓存机制 / 55
3.7 http cookie 语义 / 57
3.8 http 认证 / 60
3.9 协议级别的加密和客户端证书 / 61
3.9.1 扩展验证型证书 / 62
3.9.2 出错处理的规则 / 63
3.10 安全工程速查表 / 64
第4章 html语言 / 65
4.1 html文档背后的基本概念 / 66
4.1.1 文档解析模式 / 67
4.1.2 语义之争 / 68
4.2 理解html解析器的行为 / 69
4.2.1 多重标签之间的交互 / 70
4.2.2 显式和隐式的条件判断 / 71
4.2.3 html解析的生存建议 / 71
4.3 html实体编码 / 72
4.4 http/html 交互语义 / 73
4.5 超链接和内容包含 / 75
4.5.1 单纯的链接 / 75
4.5.2 表单和表单触发的请求 / 75
4.5.3 框架 / 77
4.5.4 特定类型的内容包含 / 78
4.5.5 关于跨站请求伪造 / 80
4.6 安全工程速查表 / 81
第5章 层叠样式表 / 83
5.1 css基本语法 / 84
5.1.1 属性定义 / 85
5.1.2 @ 指令和xbl绑定 / 85
5.1.3 与html的交互 / 86
5.2 重新同步的风险 / 86
5.3 字符编码 / 87
5.4 安全工程速查表 / 89
第6章 浏览器端脚本 / 90
6.1 javascript的基本特点 / 91
6.1.1 脚本处理模型 / 92
6.1.2 执行顺序的控制 / 95
6.1.3 代码和对象检视功能 / 96
6.1.4 修改运行环境 / 97
6.1.5 javascript 对象表示法(json)和其他数据序列化 / 99
6.1.6 e4x和其他语法扩展 / 101
6.2 标准对象层级 / 102
6.2.1 文档对象模型 / 104
6.2.2 对其他文档的访问 / 106
6.3 脚本字符编码 / 107
6.4 代码包含模式和嵌入风险 / 108
6.5 活死人:visual basic / 109
6.6 安全工程速查表 / 110
第7章 非html类型文档 / 112
7.1 纯文本文件 / 112
7.2 位图图片 / 113
7.3 音频与视频 / 114
7.4 各种xml文件 / 114
7.4.1 常规xml视图效果 / 115
7.4.2 可缩放向量图片 / 116
7.4.3 数学标记语言 / 117
7.4.4 xml用户界面语言 / 117
7.4.5 无线标记语言 / 118
7.4.6 rss 和 atom订阅源 / 118
7.5 关于不可显示的文件类型 / 119
7.6 安全工程速查表 / 120
第8章 浏览器插件产生的内容 / 121
8.1 对插件的调用 / 122
8.2 文档显示帮助程序 / 124
8.3 插件的各种应用框架 / 125
8.3.1 adobe flash / 126
8.3.2 microsoft silverlight / 128
8.3.3 sun java / 129
8.3.4 xml browser applications / 129
8.4 activex controls / 130
8.5 其他插件的情况 / 131
8.6 安全工程速查表 / 132
第二部分 浏览器安全特性
第9章 内容隔离逻辑 / 134
9.1 dom的同源策略 / 135
9.1.1 document.domain / 136
9.1.2 postmessage(...) / 137
9.1.3 与浏览器身份验证的交互 / 138
9.2 xmlhttprequest的同源策略 / 139
9.3 web storage 的同源策略 / 141
9.4 cookies 的安全策略 / 142
9.4.1 cookie对同源策略的影响 / 144
9.4.2 域名限制带来的问题 / 145
9.4.3 localhost带来的非一般风险 / 145
9.4.4 cookie与“合法”dns劫持 / 146
9.5 插件的安全规则 / 147
9.5.1 adobe flash / 148
9.5.2 microsoft silverlight / 151
9.5.3 java / 151
9.6 如何处理格式含糊或意想不到的源信息 / 152
9.6.1 ip 地址 / 153
9.6.2 主机名里有额外的点号 / 153
9.6.3 不完整的主机名 / 153
9.6.4 本地文件 / 154
9.6.5 伪url / 155
9.6.6 浏览器扩展和用户界面 / 155
9.7 源的其他应用 / 156
9.8 安全工程速查表 / 157
第10章 源的继承 / 158
10.1 about:blank页面的源继承 / 158
10.2 data: url的继承 / 160
10.3 javascript:和vbscript: url对源的继承 / 162
10.4 关于受限伪url的一些补充 / 163
10.5 安全工程速查表 / 164
第11章 同源策略之外的世界 / 165
11.1 窗口和框架的交互 / 166
11.1.1 改变现有页面的地址 / 166
11.1.2 不请自来的框架 / 170
11.2 跨域内容包含 / 172
11.3 与隐私相关的副作用 / 175
11.4 其他的同源漏洞和应用 / 177
11.5 安全工程速查表 / 178
第12章 其他的安全边界 / 179
12.1 跳转到敏感协议 / 179
12.2 访问内部网络 / 180
12.3 禁用的端口 / 182
12.4 对第三方cookie的限制 / 184
12.5 安全工程速查表 / 186
第13章 内容识别机制 / 187
13.1 文档类型检测的逻辑 / 188
13.1.1 格式错误的mime type写法 / 189
13.1.2 特殊的 content-type 值 / 189
13.1.3 无法识别的content type类型 / 191
13.1.4 防御性使用content-disposition / 193
13.1.5 子资源的内容设置 / 194
13.1.6 文件下载和其他非http内容 / 194
13.2 字符集处理 / 196
13.2.1 字节顺序标记 / 198
13.2.2 字符集继承和覆盖 / 199
13.2.3 通过html代码设置子资源字符集 / 199
13.2.4 非http 文件的编码检测 / 201
13.3 安全工程速查表 / 202
第14章 应对恶意脚本 / 203
14.1 拒绝服务攻击 / 204
14.1.1 执行时间和内存使用的限制 / 205
14.1.2 连接限制 / 205
14.1.3 过滤弹出窗口 / 206
14.1.4 对话框的使用限制 / 208
14.2 窗口定位和外观问题 / 209
14.3 用户界面的时差攻击 / 211
14.4 安全工程速查表 / 214
第15章 外围的网站特权 / 215
15.1 浏览器和托管插件的站点权限 / 216
15.2 表单密码管理 / 217
15.3 ie浏览器的区域模型 / 219
15.4 安全工程速查表 / 222
第三部分 浏览器安全机制的未来趋势
第16章 新的浏览器安全特性与未来展望 / 224
16.1 安全模型扩展框架 / 224
16.1.1 跨域请求 / 225
16.1.2 xdomainrequest / 228
16.1.3 origin 请求头的其他应用 / 229
16.2 安全模型限制框架 / 230
16.2.1 内容安全策略 / 230
16.2.2 沙盒框架 / 234
16.2.3 严格传输安全 / 236
16.2.4 隐私浏览模式 / 237
16.3 其他的一些进展 / 237
16.3.1 浏览器内置的 html净化器 / 238
16.3.2 xss 过滤 / 239
16.4 安全工程速查表 / 240
第17章 其他值得注意的浏览器机制 / 241
17.1 url级别和协议级别的提议 / 241
17.2 内容相关的特性 / 243
17.3 i/o接口 / 245
第18章 常见的web安全漏洞 / 246
18.1 与web应用相关的漏洞 / 246
18.2 web应用设计时应谨记的问题 / 248
18.3 服务器端的常见问题 / 250
后记 / 252
注释 / 254

作者简介

《web之困:现代web应用安全指南》在web安全领域有“圣经”的美誉,在世界范围内被安全工作者和web从业人员广为称道,由来自google chrome浏览器团队的世界顶级黑客、国际一流安全专家撰写,是目前唯一深度探索现代web浏览器安全技术的专著。本书从浏览器设计的角度切入,以探讨浏览器的各主要特性和由此衍生出来的各种安全相关问题为主线,深入剖析了现代web浏览器的技术原理、安全机制和设计上的安全缺陷,为web安全工作者和开发工程师们应对各种基于浏览器的安全隐患提供了应对措施。


 Web之困:现代Web应用安全指南下载 精选章节试读 更多精彩书评



发布书评

 
 


精彩书评 (总计1条)

  •     唉,无错不成书!道理我也知道,何况自己的水平摆在那里,不错也不可能!不过看到出错总是不甘心啊不甘心。所以只能事后修补了,在这里建个纠错表吧,大家有发现什么问题都可以告诉我,以后要是重印希望可以改正啦。但素(这里必须有个但素),千万表被这篇纠错表的长度吓倒,贸然决定投身英文版!首先纠错表里的前半段在现版本中(2印以后)已得到纠正,这部分也是最主要的错译;其次,后半段的纠错,实际上很多纠的是原书的错误,是非常有价值的(感谢那位细心的读者@Tiecheng),是原书也没有滴。 最后,作为被本书英文版坑了一路的译者(此处涕泪交织滂沱T..T),弱弱地建议不要轻易尝试通读此书原版 —— 读完需要莫大的勇气和巨多的时间,三思而行啊。此书英文非常绕非常难懂!严重不推荐。最后的然后,如果您真把原书啃完了,当真好汉一条啊,请受俺一拜,也切记得给我多提意见! 另外也很感谢这位读者(@Pythoner)细致的思维图总结和纠错:http://www.pythoner.com/386.html有看书看到最后忘了前面的,可以下载一份,帮助记忆。:) ==↓↓↓↓↓ 最最严重的几个错误!(这部分在第二次印刷版本里已修改) ↓↓↓↓↓==P29,但却未禁止非保留字符不能以编码形式出现,这句话是不是应该变成“但却未禁止非保留字符以编码形式出现” (by @沈沉舟)P67,第一行,“引号括起来的字符串”==>“引号字符”!这真是最脑子入水的一个错误了! !!P89, ““}”这些字符都需要做转义处理,使用数字编码形式的转义编码时要引号括起来。” ==> ““}”和单双引号这些字符,都需要使用数字编码形式的转义处理。” —— 和上一条类似,这个也错得非常脑残!P88,“所以许多CSS解析器也能接受未被引号括起的字符串里的任意转义序列” ==>“所以许多CSS解析器对本该用引号括起来的字符串,也支持转义方式的写法。” P32 中段那个举例的URL,实际上应该是:http://example.com/.wholesome-domain.com/ examples.com后面有个黑底反白的斜杠!现在却把o字母给反白了,斜杠没了,所以那句解释看起来就很无厘头。 ==↓↓↓↓↓ 以下是其他细节版(这部分错误第二次印刷版本里已修改) ↓↓↓↓↓==P135,第2段L1:这种由协议-域名-端口三元素组合在一起的算法就叫”源“-->此算法引入的这种“协议-域名-端口”三元组就叫“源“(@jxxy)p144L8,差不多等同与绕过--->差不多等同于绕过 (@jxxy)P41,L12,...的25端口有上运行着.. ==>“有”字多余(@jxxy)P75,“见图4-1中的左图” ==>“以图4-1中左边的窗口为例”P76,"百分号编码机制先进行转义" ==> “百分号编码机制转义”P78,4.5.4章节标题往上的一行里,“一个单独的页面” ==>“同一个页面”P81,倒数第二段里,“以恰当的语言转义方式” ==>“都应该以对应语言所适用的转义方式”, 因为上面这里提到了js,css两种语言,就是要按照它们各自的语法要求进行转义。P84,最后的“注意”里,“在这个例子里” ==>“如这个例子所示”P88,“所以许多CSS解析器也能接受未被引号括起的字符串里的任意转义序列” ==>“所以许多CSS解析器对本该用引号括起来的字符串,也支持转义方式的写法。” P89,唉,又一个脑残级错误!““}”这些字符都需要做转义处理,使用数字编码形式的转义编码时要引号括起来。” ==> ““}”和单双引号这些字符,都需要使用数字编码形式的转义处理。”P105,下半页的位置里,“也会按照规定的语法”==>“会先按照规范的语法”前言第三段,“几乎每个如今值得说道的在线应用,都因为贪方便凑合着用从早期互联网搬过来的技术,导致后期付出了沉重代价” ==>"几乎每个如今值得说道的在线应用,都曾由于使用了那些早期贪方便胡乱拼凑的互联网技术,导致以后付出了沉重的代价" (by @jxxy)和上面同一段,“很特定的一种”==>“很特定的一个类别”(by @jxxy)P31,倒数3行“那38个的字母” ==>“那38个字母”P45,第一段“这个请求头都必须存在”==>“这个请求头却必须存在”P51,第一段“RFC4918里描述这个HTTP方法是用于写作和版本控制协议的。”==>“RFC4918描述了这个用于写作和版本控制协议的HTTP方法。”P61,那段“未被采纳的建议”里,“给与”==>“给予”P61,最后一行,“为何不用于几年前”==>“为何不用在几年前”P64,“并把最后一个句号....其他句号...”里的“句号”,可能不够准确,中文读者会认为是“。”符号,其实应该是点号“.”,原文是period,也许该用“句点号”?P66,第一段的最后,“文本对象模型”==>“文档对象模型”P66,4.1章节里的第一段,“则文本节点”==>“而文本节点”P67 那段“注意”里,“导致一种常见...”==>“导致一系列常见...”P67,第一行,“引号括起来的字符串”==>“引号字符”!P72 "则代表个好看的unicode箭头" ==>“则代表一个好看的unicode箭头”P72那段注意里,“如果能用来处理不受信任的内容,后者明显是不安全的” ==> “如果这个外部URL的内容是有问题的,则很明显后一种命名实体的定义方式就不安全了”P73 "javascript: 伪URL" ==> javascript: 形式的伪URL绝对引用... (原来的两边引号都可以去掉)沈沉舟 : P29,但却未禁止非保留字符不能以编码形式出现,这句话是不是应该变成“但却未禁止非保留字符以编码形式出现” ——确实,没表达好!P92页,译注中第二个parsing错了。第一个是对的,第二个变成pasring。P100页,第三行,"given_name" 前面的那个问号,不知道打哪里冒出来的,其实是没有的。字体问题:唉,出版社的字体选择问题吧,结果书中很多示范代码里原本该是黑体的地方,“黑”得很不明显!这都没法一一纠错了,只能大家自己去对那个英文电子版吧。那些黑体提示还是有意义的。================ 以上为 2013年的分割线 ================从分割线往上的部分,都是本书第2次印刷后,已做修改的错误。从分割线往下的部分,都是本书第2次印刷后,仍然存在的错误,亟待第三次印刷才能修改了。================ 以下为 2014年的分割线 ================2014年10月3号,收到一份非常详尽的纠错列表,让人心服口服,这位细心的读者(Wu Tiecheng)不但找出了我在翻译中的错误,还有前后不够一致的,不够符合常规用法的各种问题,甚至找出了很多原书就带过来的错误,非常令人佩服。衷心感谢!希望这些问题都能在后续的版本里得到修正(2014/10/20)。以下列表还不是邮件里的全部,部分格式相关的小错未能尽录。p.49 3.2.2里“很多浏览器在重新加载包含POST方式的数据时”==>“很多浏览器在重新加载通过POST方式获得的数据时”p.51 3.2.9 “RFC 491812里描述这个HTTP方法是用于写作和版本控制协议的。”==>“这是一种分布式创作和版本控制协议,其规范由 RFC 4918描述。”p86 第5行“-moze-binding” ==>“-moz-binding”p86 第6行 “moz-binding 是Firefox特有的...”==> “-moz-binding 是Firefox特有的...”p92 第3行 “display_str(text);”==> “display_string(text);”p99 6.1.5 章节里第一段第3行 “重写大括号”==>“重载大括号”p138 倒数第二行 “自感染”==>“自伤式”p148 9.1.5 章节中,“AllowScriptAccess参数”一段中,两个“sameorigin”都应该是“sameDomain”p149 第2行 “allowScriptAccess=none”==>“allowScriptAccess=never”p155 9.6.6章节,第二段第二行,“Chrome对JavaScript”==>“Chrome对特权JavaScript”p171 中间“X-Frame-Options: same-origin”==>“X-Frame-Options: sameorigin”p178 倒数第6行 “frameElements”==>"frame"p178 倒数第3行 “X-Frame-Option“ ==> “X-Frame-Options“p202 第3行 “X-Content-Options:nosniff”==> “X-Content-Type-Options:nosniff”p208 第5行 “Window.prompt()”==>“window.prompt()”p209 最后一段里的注释,“出于可用性的考虑,除了这个专用的onbeforeunload对话框,互联网上的页面就没有其他退出浏览器的方式了。(但令人惊讶的是,这个原本专门用于把用户永久地困在一个恶意页面并取消任何跳转尝试的做法,实际上并不是太受欢迎。)”==>“出于可用性的考虑,互联网页面一旦进入图示这种暂停浏览的状态,就只有通过这一特定的onbeforeunload对话框,才能恢复到正常的浏览状态。(原本可以利用这个机制,把用户永久地困在某个恶意页面,令人惊讶的是,这种做法实际上并不受欢迎。)”p222 第3行“视频”==>“摄像头”p227 第2段的最后一句话里,“AccessControl-Request-Method”==>“Access-Control-Request-Method”p227 第3段的第一句话里,“Access-Control Allow-Origin”==>“Access-Control-Allow-Origin”p227 “CORS的现状”第一段第2行,“没有采纳”==>“延缓采纳”p229 16.1.3 第二段最后一句“XSFR”==>“XSRF”p231 “插件内容”一节第一句话里,“控制插件对所在页面的访问权限”==>“控制可以加载哪些插件”。p237 第一行最后部分,“设置为安全...”==>“带有Secure标记”p239 最后一段上面的那句示例,“XSS-Protection: 1; mode=block”==>“X-XSS-Protection: 1; mode=block”p243 “降低HTTP网络开销”一节里,“响应握手”==>“挑战-应答握手认证”p244 第一行的最后,“不支持序列化查询”==>“查询时不需要对数据进行序列化处理”p244 "5.页面渲染显示" ==>"5.页面渲染预处理"

精彩短评 (总计32条)

  •     这本书嘛,作者站得高度很高,说实话,里面好多观点都是第一次听说,也确实是在其他书里面根本看不到的。但是实际上,这本书翻译过来还是好生硬的,大段的长句子,直接降低了阅读性,反正我一次看下来,没记得多少,估计需要二次过了。书是好书,作者也牛掰,但是翻译打个折
  •     渗透丛书。。。
  •     感觉作者哥哥是在不停的吐槽
  •     被试读吸引了..然后我在阳台上困了- -我以为后面的会和试读一样适合非web人员
  •     这本书要配合道哥那本白帽子+HTTP权威指南
  •     就不打分了。
  •     书是一本好书,但是真的不适合新手,看起来很吃劲,前面几张还好,后面的就很难理解了,以后等自己只是储备高一点再来翻阅吧
  •     读了第一遍,发现门槛有点高
  •     序言说的对,这书很多地方举重若轻,一句话的时候其实查起来背景知识很复杂。不过翻译的有的地方有点乱。。
  •     1
  •     讲原理的一本书,web下的各种标准各种混乱,看完反而觉得如果一个web应用做的一点问题都没有反而不正常了
  •     一切从理解游戏规则开始,然后再如何变通更好的玩游戏 :)
  •     这本书讲了很多浏览器和HTTP标准相关的东西.再从标准和浏览器的实现来讲安全漏洞的产生.补充了很多 忘记的基础知识
  •     这能读的下去、、、、好烂
  •      一些html的常识. 放来偶尔回顾下也是不错
  •     翻译让我看不下去
  •     各大网站都开始预售了。京东:http://item.jd.com/11329636.html 当当:http://product.dangdang.com/23344491.html 亚马逊:http://www.amazon.cn/a/dp/B00FFQ6IKU
  •     语言实在太难过了
  •     作者Michal Zalewski属Web与二进制安全双修的集大成者,AFL、skipfish的作者,从HTTP协议层逐级拆解Web安全风险,奇技淫巧、脑洞大开,其中外部资源调用403的钓鱼、打开新窗口重定向父页面的钓鱼、复杂协议的安全边界,在出书后的4年里依然风靡,实在佩服!
  •     web安全必备
  •     还是推荐吧 虽然很多情况并不符合实际,大多数网站请求的跨域资源不是子域就是值得信任的
  •     大四的时候翻过。没太懂在讲什么。
  •     web安全很不错的一本书,举重若轻,曝漏洞于无形... 字里行间也能看出来作者深厚的功底,就是有些内容太零碎了...
  •     第一次看的时候是毛头小子的时候,现在想再看一次
  •     这本书的英语说真的不是很好懂
  •     :无
  •     大牛吐槽的字里行间,也是要仔细看的
  •     往好了说叫不明觉厉,不好了说就是话说一半,这个书对读者要求较高或者作者(译者)没说清楚地方还是有的(感觉语义不祥).
  •     “我们会对程序员用的加密方式不对而耿耿于怀,却不介意我们的门锁可以用万能钥匙打开”,网络世界如此年轻,还没有发展出自己独立的行为规范。在web开发中的安全,曾经或多或少地忽略过,读了这本书,对将来web开发的安全性考虑有很大帮助。
  •     比较枯燥
  •     原作者的英文太绕,翻译过来的中文绕了几圈所以更绕。每次绕的单词可以绕地球一圈。原作者一直在show智商。fuck off ,你智商高先把英文学好吧 motherfucker!作为浏览器安全或许是一本不可多得的好书,可以看,最好是原版和译文参照,译者尽力了,但是或许应该再加把劲。
  •     安全入门入籍;需要多次琢磨,第一遍不够深入
 

外国儿童文学,篆刻,百科,生物科学,科普,初中通用,育儿亲子,美容护肤PDF图书下载,。 零度图书网 

零度图书网 @ 2024