第1章 Web安全的重要性 1
1.1案例解析 1
1.2风险与回报 4
1.3构建安全体系 5
1.3.1分层防御 6
1.3.2不存在可信任的输入数据 7
1.3.3关注错误提醒 7
1.3.4监视攻击 7
1.3.5使用最小特权 7
1.3.6防火墙和加密不能确保安全 8
1.3.7安全应该是默认状态 8
1.3.8代码防御 8
1.4 OWASP中的十大安全隐患 9
1.5进一步学习 10
1.6本章小结 10
第I部分 ASP&NET安全基础 13
第2章 Web工作原理 13
2.1深入理解HTTP 13
2.1.1请求资源 14
2.1.2请求响应 15
2.1.3嗅探HTTP请求和响应 17
2.2理解HTML表单 18
2.3 ASP.NET的工作原理 27
2.3.1理解ASP.NET事件的工作原理 27
2.3.2检查ASP.NET管道 31
2.3.3编写HTTP模块 31
2.4本章小结 34
第3章 安全接受用户输入 35
3.1定义输入 35
3.2安全处理输入 36
3.2.1安全应答用户输入 37
3.2.2缓解XSS攻击 41
3.2.3Microsoft Anti-XSS库 43
3.2.4限制输入 45
3.2.5保护cookie 48
3.3验证表单输入 49
3.3.1验证控件 51
3.3.2标准的ASP.NET验证控件 52
3.4本章小结 59
第4章 查询字符串、表单域、事件和浏览器信息的用法 61
4.1使用合适的输入类型 61
4.2查询字符串 62
4.3表单域 63
4.4避免请求伪造 64
4.5保护ASP.NET事件 76
4.6避免浏览器信息错误 78
4.7本章小结 80
第5章 控制信息 81
5.1控制ViewState 81
5.1.1验证ViewState 83
5.1.2加密ViewState 85
5.1.3保护ViewState避免一键攻击 85
5.1.4从客户端页面中删除ViewState 87
5.1.5禁用浏览器缓存 88
5.2错误处理和日志记录 88
5.2.1改善错误处理 90
5.2.2注意特殊异常 91
5.2.3记录错误和监视应用程序 91
5.3限制搜索引擎 104
5.3.1使用元标记控制机器人 105
5.3.2使用robots.txt文件控制机器人 105
5.4保护配置文件中的密码 106
5.5本章小结 108
第6章 散列和加密 109
6.1使用散列保护完整性 110
6.1.1选择散列算法 110
6.1.2保护散列密码 112
6.2加密数据 115
6.2.1对称加密 116
6.2.2使用非对称加密来共享数据 123
6.2.3使用Windows DPAPI 138
6.3本章小结 139
第Ⅱ部分 保护常见的ASP.NET任务 143
第7章 添加用户名和密码 143
7.1身份验证和授权 144
7.2发现您自己的身份 144
7.3添加ASP.NET身份验证 146
7.3.1表单身份验证 146
7.3.2 Windows身份验证 157
7.4 ASP.NET授权 161
7.4.1检查<allow>和<deny>元素 162
7.4.2基于角色授权 163
7.4.3限制访问文件或者文件夹的权限 168
7.4.4以编程方式检查用户和角色 171
7.5本章小结 171
第8章 安全访问数据库 173
8.1糟糕代码:演示SQL注入攻击 174
8.2修补漏洞 179
8.3更多SQL Server安全措施 182
8.3.1没有密码的连接 183
8.3.2 SQL权限 184
8.3.3使用视图 186
8.3.4 SQL Express用户实例 187
8.3.5内置Web Server的缺点 188
8.3.6动态SQL存储过程 188
8.3.7使用SQL加密 189
8.4本章小结 193
第9章 使用文件系统 195
9.1安全访问现有的文件 195
9.1.1静态文件的安全性 201
9.1.2文件下载和设置文件名 204
9.1.3更深入的文件访问检查 204
9.1.4访问远程文件 206
9.2安全创建文件 206
9.3处理用户上传文件 209
9.4本章小结 212
第10章 保护×ML 213
10.1验证XML 213
10.1.1格式良好的XML 213
10.1.2有效的XML 214
10.1.3XML解析器 215
10.2查询XML 222
10.3保护XML文档 225
10.3.1加密XML文档 226
10.3.2签名XML文档 234
10.4本章小结 240
第Ⅲ部分 ASP.NET高级内容 243
第11章 与WCF共享数据 243
11.1创建和使用WCF服务 243
11.2 WCF的安全和隐秘性 247
11.2.1传输安全模式 247
11.2.2消息安全模式 248
11.2.3混合模式 249
11.2.4选择安全模式 249
11.2.5选择客户端凭据 249
11.3增加Internet服务的安全性 250
11.4使用WCF签名消息 261
11.5 WCF的日志和审计功能 265
11.6使用检查器来验证参数 267
11.7使用消息检查器 269
11.8在WCF中抛出错误 273
11.9本章小结 274
第12章 保护RlA 277
12.1 RIA体系结构 278
12.2 Ajax应用程序的安全性 278
12.2.1 XMVLHttpRequest对象 279
12.2.2 Ajax同源策略 280
12.2.3 Microsoft ASP.NET Ajax架构 281
12.3 Silverlight应用程序的安全性 289
12.3.1 CoreCLR安全模型 289
12.3.2使用HTML Bridge 291
12.3.3访问本地文件系统 295
12.3.4在Silverlight中使用加密算法 297
12.3.5使用Silverlight访问Web和Web服务 300
12.4在Ajax和Silverlight中使用ASP.NET身份验证和授权 301
12.5本章小结 302
第13章 代码访问安全性 303
13.1代码访问安全性 303
13.1.1 ASP.NET信任级别 305
13.1.2 NET 4新特性 314
13.2本章小结 315
第14章 保护llS 317
14.1安装和配置IIS7 317
14.1.1IIS角色服务 319
14.1.2创建和配置应用程序池 322
14.1.3在IIS中配置信任级别 324
14.2过滤请求 326
14.2.1过滤双重编码请求 327
14.2.2使用非ASCII字符过滤请求 327
14.2.3以文件扩展名为基础过滤请求 327
14.2.4以请求大小为基础过滤请求 328
14.2.5以HTTP动词为基础过滤请求 328
14.2.6以URL序列为基础过滤请求 329
14.2.7以请求段为基础过滤请求 329
14.2.8以请求头文件为基础过滤请求 329
14.2.9拒绝请求的状态码 330
14.3使用Log Parser挖掘IIS日志文件 330
14.4使用证书 336
14.4.1请求SSL证书 337
14.4.2配置站点以使用HTTPS 339
14.4.3建立测试CA 339
14.5本章小结 341
第15章 第三方身份验证 343
15.1联合身份简史 343
15.2使用WIF接收SAML和Information Card 346
15.2.1创建一个声明感知Web站点 347
15.2.2接受Information Card 349
15.2.3使用声明身份 357
15.3在Web站点中使用OpenID 358
15.4在Web站点中使用Windows Live ID 363
15.5表单身份验证与第三方身份验证集成策略 366
15.6本章小结 367
第16章 ASP.NET MVC架构安全开发 369
16.1 MVC输入和输出 370
16.1.1避免XSS攻击 370
16.1.2避免CSRF攻击 371
16.1.3保护模型绑定 371
16.1.4模型验证和错误消息 373
16.2 ASP.NET MVC身份验证和授权 375
16.2.1授权操作和控制器 376
16.2.2保护公共控制器方法 377
16.2.3发现当前用户 377
16.2.4使用授权过滤器自定义授权 378
16.3错误处理 379
16.4本章小结 381