书籍详情
开发更安全的ASP.NET 2.0应用程序
作者:(美)拜尔 著;华中宇、田亮君、陈文 译
出版社:人民邮电出版社
出版时间:2008-01-01
ISBN:9787115177483
定价:¥59.00
购买这本书可以去
内容简介
本书以作者的实际经验为主,介绍了关于开发更安全的ASP.NET 2.0应用的各方面的内容。全书共10章,内容包括:Web应用程序安全、ASP.NET 2.0构架、输入验证、存储机密、身份验证和授权、安全提供程序和控件、日志和监测、部分信任ASP.NET、部署和配置以及工具和资源。附录部分提供了创建自定义受保护配置提供程序、会话状态、分拆ASP.NET应用程序、安全的Web服务和使用Visual Studio Team Edition进行安全测试等内容。 本书提供的示例简练易懂,书中代码示例都经过认真的编写,读者无需记住所有的内容,而可以将本书的实例很容易地引入到现实的应用程序中。本书适用于使用ASP.NET 2.0技术同时关注安全性的各方面读者。
作者简介
Dominick Baier为世界各地的公司咨询软件安全方面的问题,同时还负责DevelopMentor的安全课程和一家针对开发人员的培训公司。他是一位具有BS 7799/ISO 17799资格的主导审核员,还是Visual Developer-Security方面的MVP。另外,Dominick经常在业界的会议中发言,并为德国MSDN的安全主题内容撰稿,同时还撰写了一个受欢迎的博客。
目录
第1章 Web应用程序安全
1.1 OWASP Top 10
1.2 总体原则
1.2.1 安全是一种特性
1.2.2 使用最低权限
1.2.3 预防、监测和反应
1.2.4 分层防御
1.2.5 不存在可信的输入
1.2.6 注意故障模式
1.2.7 注意应用程序拒绝服务
1.2.8 首选默认安全措施
1.2.9 加密不能确保安全
1.2.10 防火墙不能确保安全
1.3 小结
第2章 ASP.NET 2.0架构
2.1 理解宿主
2.2 理解管线
2.2.1 HTTP模块
2.2.2 编写模块
2.2.3 处理程序
2.2.4 检查管线
2.3 编译ASP.NET页
2.4 小结
第3章 输入验证
3.1 什么是输入
3.2 输入验证的必要性
3.3 输入验证技术
3.3.1 黑名单
3.3.2 白名单
3.4 缓解技术
3.4.1 输出编码
3.4.2 沙盒
3.4.3 完整性检查
3.5 ASP.NET应用程序中的验证
3.5.1 自动验证服务
3.5.2 表单验证
3.5.3 创建自定义验证控件
3.6 小结
第4章 存储机密
4.1 识别攻击和攻击者
4.2 加密术是救星吗
4.3 哈希数据
4.3.1 哈希算法
4.3.2 .NET的哈希算法
4.4 保存密码
4.5 加密数据
4.5.1 对称性加密
4.5.2 加密算法
4.5.3 密钥和密钥大小
4.5.4 .NET的对称性加密
4.5.5 完整性保护
4.5.6 整合:设计使用对称性加密的应用程序
4.5.7 非对称性加密
4.5.8 证书
4.5.9 在.NET中使用非对称性加密证书
4.5.10 整合:设计使用非对称性加密和证书的应用程序
4.6 使用Windows数据保护API
4.7 保护配置数据
4.7.1 配置和安装
4.7.2 保护配置
4.8 保护ViewState
4.9 小结
第5章 验证和授权
5.1 基础知识
5.1.1 术语
5.1.2 应用程序设计
5.1.3 ASP.NET安全管道
5.1.4 .NET安全架构和基于角色的安全
5.1.5 服务器验证
5.2 使用Windows账户
5.2.1 IIS验证方法
5.2.2 授权
5.2.3 模拟
5.2.4 委托
5.2.5 安全上下文和访问外部资源
5.3 使用自定义账户
5.3.1 表单验证
5.3.2 表单验证机制
5.3.3 配置表单验证
5.3.4 确保表单验证的安全
5.3.5 自定义表单验证
5.3.6 Web场
5.3.7 单点登录
5.3.8 使用ASP.NET保护非ASP.NET资源
5.4 混合方法
5.4.1 手动Windows验证
5.4.2 协议转换
5.4.3 对自定义账户实现基本验证
5.4.4 用户证书
5.4.5 混合模式验证
5.5 小结
第6章 安全提供程序和控件
6.1 理解成员功能
6.1.1 方法
6.1.2 事件
6.1.3 成员配置
6.1.4 SQL成员提供程序
6.1.5 Active Directory成员提供程序
6.1.6 与成员相关的控件
6.2 理解角色管理器
6.2.1 角色管理器模块
6.2.2 角色管理器配置
6.2.3 SQL角色提供程序
6.2.4 Windows令牌角色提供程序
6.2.5 授权存储角色提供程序
6.2.6 与角色相关的控件
6.2.7 成员和角色打包
6.3 使用SiteMap导航
6.4 创建功能和提供程序
6.5 指南
6.6 小结
第7章 日志和监测
7.1 错误处理
7.1.1 获取401非授权错误
7.1.2 错误处理
7.2 日志和监测
7.2.1 事件日志
7.2.2 性能监视器
7.2.3 电子邮件
7.2.4 Windows管理监测
7.2.5 ASP.NET跟踪和System.Diagnostics.Trace
7.2.6 日志和部分信任
7.3 健康监测框架
7.3.1 创建事件
7.3.2 配置健康检测
7.3.3 SQL服务器提供程序
7.3.4 WMI提供程序
7.3.5 电子邮件提供程序
7.3.6 编写自定义提供程序
7.3.7 编写自定义缓冲提供程序
7.3.8 状态监视和部分信任
7.3.9 指南
7.4 小结
第8章 部分信任ASP.NET
8.1 为什么选择部分信任
8.2 配置部分信任
8.3 理解策略文件
8.3.1 安全类
8.3.2 命名权限集
8.3.3 代码组
8.3.4 策略加载和解析
8.4 自定义策略文件
8.5 分割代码
8.5.1 重构代码
8.5.2 堆栈审核
8.5.3 为经过分区的程序集修改策略
8.5.4 限制调用组件的用户
8.6 创建自定义权限
8.6.1 权限类
8.6.2 封装
8.6.3 属性
8.7 SecurityException的作用
8.8 锁定配置
8.9 小结
第9章 部署和配置
9.1 总指导原则
9.2 操作系统强化
9.2.1 自动更新
9.2.2 禁用服务和协议
9.2.3 包过滤
9.2.4 保护Windows文件共享
9.2.5 审核
9.3 数据库服务器强化
9.4 Web服务器强化
9.4.1 应用程序池
9.4.2 Web服务扩展
9.4.3 Web内容
9.4.4 HTTP头
9.4.5 日志
9.4.6 URLScan
9.4.7 访问控制列表
9.4.8 启用SSL
9.4.9 验证方法
9.5 ASP.NET强化
9.5.1 配置锁死
9.5.2 推荐设置
9.5.3 预编译
9.6 小结
第10章 工具和资源
10.1 工具类型
10.2 确定合适的工具
10.3 浏览代理服务器和HTTP协议检测工具
10.3.1 Fiddler
10.3.2 Paros
10.3.3 WebScarab
10.3.4 WSDigger
10.4 黑盒扫描器
10.4.1 SPI Dynamics WebInspect
10.4.2 Watchfire AppScan
10.4.3 Berretta
10.5 配置分析
10.5.1 SSL Digger
10.5.2 PermCalc
10.5.3 Desaware CAS Tester
10.5.4 ANSA
10.5.5 IIS Lockdown
10.6 源代码分析器
10.6.1 Foundstone CodeScout
10.6.2 Microsoft PREfix和PREfast
10.6.3 Compuware ASP.NET Security Checker
10.6.4 SPI Dynamics DevInspect
10.7 多功能工具
10.8 二进制分析
10.8.1 静态二进制分析工具
10.8.2 动态(“运行时”)二进制分析
10.8.3 调试器
10.8.4 反编译器/模糊处理器
10.9 数据库扫描器
10.9.1 AppDetective
10.9.2 MetaCoretex
10.9.3 NGSSquirrel
10.10 博客
10.11 小结
附录A 创建自定义受保护配置提供程序
附录B 会话状态
B.1 会话状态如何工作
B.1.1 Cookie vs.查询字符串
B.1.2 超时设定
B.1.3 会话模式
B.2 会话存储
B.2.1 进程内提供程序
B.2.2 状态服务器
B.2.3 SQL Server
B.3 小结
附录C 分拆ASP.NET应用程序
C.1 创建服务器端
C.2 创建客户端
C.3 创建部分信任客户端
C.4 小结
附录D 安全的Web服务
D.1 适用情况
D.2 安全的通信和服务器验证
D.3 客户端验证
D.4 小结
附录E 使用Visual Studio Team Edition进行单元测试
E.1 测试驱动开发
E.2 运行测试
E.3 测试现有代码
E.4 测试列表和测试运行配置
E.5 建立正确的测试环境
E.6 测试私有方法
E.7 预期的错误
E.8 数据驱动测试
E.9 数据驱动测试的数据管理
E.10 测试Web服务代码
E.11 在ASP.NET内部运行测试
E.12 小结
1.1 OWASP Top 10
1.2 总体原则
1.2.1 安全是一种特性
1.2.2 使用最低权限
1.2.3 预防、监测和反应
1.2.4 分层防御
1.2.5 不存在可信的输入
1.2.6 注意故障模式
1.2.7 注意应用程序拒绝服务
1.2.8 首选默认安全措施
1.2.9 加密不能确保安全
1.2.10 防火墙不能确保安全
1.3 小结
第2章 ASP.NET 2.0架构
2.1 理解宿主
2.2 理解管线
2.2.1 HTTP模块
2.2.2 编写模块
2.2.3 处理程序
2.2.4 检查管线
2.3 编译ASP.NET页
2.4 小结
第3章 输入验证
3.1 什么是输入
3.2 输入验证的必要性
3.3 输入验证技术
3.3.1 黑名单
3.3.2 白名单
3.4 缓解技术
3.4.1 输出编码
3.4.2 沙盒
3.4.3 完整性检查
3.5 ASP.NET应用程序中的验证
3.5.1 自动验证服务
3.5.2 表单验证
3.5.3 创建自定义验证控件
3.6 小结
第4章 存储机密
4.1 识别攻击和攻击者
4.2 加密术是救星吗
4.3 哈希数据
4.3.1 哈希算法
4.3.2 .NET的哈希算法
4.4 保存密码
4.5 加密数据
4.5.1 对称性加密
4.5.2 加密算法
4.5.3 密钥和密钥大小
4.5.4 .NET的对称性加密
4.5.5 完整性保护
4.5.6 整合:设计使用对称性加密的应用程序
4.5.7 非对称性加密
4.5.8 证书
4.5.9 在.NET中使用非对称性加密证书
4.5.10 整合:设计使用非对称性加密和证书的应用程序
4.6 使用Windows数据保护API
4.7 保护配置数据
4.7.1 配置和安装
4.7.2 保护配置
4.8 保护ViewState
4.9 小结
第5章 验证和授权
5.1 基础知识
5.1.1 术语
5.1.2 应用程序设计
5.1.3 ASP.NET安全管道
5.1.4 .NET安全架构和基于角色的安全
5.1.5 服务器验证
5.2 使用Windows账户
5.2.1 IIS验证方法
5.2.2 授权
5.2.3 模拟
5.2.4 委托
5.2.5 安全上下文和访问外部资源
5.3 使用自定义账户
5.3.1 表单验证
5.3.2 表单验证机制
5.3.3 配置表单验证
5.3.4 确保表单验证的安全
5.3.5 自定义表单验证
5.3.6 Web场
5.3.7 单点登录
5.3.8 使用ASP.NET保护非ASP.NET资源
5.4 混合方法
5.4.1 手动Windows验证
5.4.2 协议转换
5.4.3 对自定义账户实现基本验证
5.4.4 用户证书
5.4.5 混合模式验证
5.5 小结
第6章 安全提供程序和控件
6.1 理解成员功能
6.1.1 方法
6.1.2 事件
6.1.3 成员配置
6.1.4 SQL成员提供程序
6.1.5 Active Directory成员提供程序
6.1.6 与成员相关的控件
6.2 理解角色管理器
6.2.1 角色管理器模块
6.2.2 角色管理器配置
6.2.3 SQL角色提供程序
6.2.4 Windows令牌角色提供程序
6.2.5 授权存储角色提供程序
6.2.6 与角色相关的控件
6.2.7 成员和角色打包
6.3 使用SiteMap导航
6.4 创建功能和提供程序
6.5 指南
6.6 小结
第7章 日志和监测
7.1 错误处理
7.1.1 获取401非授权错误
7.1.2 错误处理
7.2 日志和监测
7.2.1 事件日志
7.2.2 性能监视器
7.2.3 电子邮件
7.2.4 Windows管理监测
7.2.5 ASP.NET跟踪和System.Diagnostics.Trace
7.2.6 日志和部分信任
7.3 健康监测框架
7.3.1 创建事件
7.3.2 配置健康检测
7.3.3 SQL服务器提供程序
7.3.4 WMI提供程序
7.3.5 电子邮件提供程序
7.3.6 编写自定义提供程序
7.3.7 编写自定义缓冲提供程序
7.3.8 状态监视和部分信任
7.3.9 指南
7.4 小结
第8章 部分信任ASP.NET
8.1 为什么选择部分信任
8.2 配置部分信任
8.3 理解策略文件
8.3.1 安全类
8.3.2 命名权限集
8.3.3 代码组
8.3.4 策略加载和解析
8.4 自定义策略文件
8.5 分割代码
8.5.1 重构代码
8.5.2 堆栈审核
8.5.3 为经过分区的程序集修改策略
8.5.4 限制调用组件的用户
8.6 创建自定义权限
8.6.1 权限类
8.6.2 封装
8.6.3 属性
8.7 SecurityException的作用
8.8 锁定配置
8.9 小结
第9章 部署和配置
9.1 总指导原则
9.2 操作系统强化
9.2.1 自动更新
9.2.2 禁用服务和协议
9.2.3 包过滤
9.2.4 保护Windows文件共享
9.2.5 审核
9.3 数据库服务器强化
9.4 Web服务器强化
9.4.1 应用程序池
9.4.2 Web服务扩展
9.4.3 Web内容
9.4.4 HTTP头
9.4.5 日志
9.4.6 URLScan
9.4.7 访问控制列表
9.4.8 启用SSL
9.4.9 验证方法
9.5 ASP.NET强化
9.5.1 配置锁死
9.5.2 推荐设置
9.5.3 预编译
9.6 小结
第10章 工具和资源
10.1 工具类型
10.2 确定合适的工具
10.3 浏览代理服务器和HTTP协议检测工具
10.3.1 Fiddler
10.3.2 Paros
10.3.3 WebScarab
10.3.4 WSDigger
10.4 黑盒扫描器
10.4.1 SPI Dynamics WebInspect
10.4.2 Watchfire AppScan
10.4.3 Berretta
10.5 配置分析
10.5.1 SSL Digger
10.5.2 PermCalc
10.5.3 Desaware CAS Tester
10.5.4 ANSA
10.5.5 IIS Lockdown
10.6 源代码分析器
10.6.1 Foundstone CodeScout
10.6.2 Microsoft PREfix和PREfast
10.6.3 Compuware ASP.NET Security Checker
10.6.4 SPI Dynamics DevInspect
10.7 多功能工具
10.8 二进制分析
10.8.1 静态二进制分析工具
10.8.2 动态(“运行时”)二进制分析
10.8.3 调试器
10.8.4 反编译器/模糊处理器
10.9 数据库扫描器
10.9.1 AppDetective
10.9.2 MetaCoretex
10.9.3 NGSSquirrel
10.10 博客
10.11 小结
附录A 创建自定义受保护配置提供程序
附录B 会话状态
B.1 会话状态如何工作
B.1.1 Cookie vs.查询字符串
B.1.2 超时设定
B.1.3 会话模式
B.2 会话存储
B.2.1 进程内提供程序
B.2.2 状态服务器
B.2.3 SQL Server
B.3 小结
附录C 分拆ASP.NET应用程序
C.1 创建服务器端
C.2 创建客户端
C.3 创建部分信任客户端
C.4 小结
附录D 安全的Web服务
D.1 适用情况
D.2 安全的通信和服务器验证
D.3 客户端验证
D.4 小结
附录E 使用Visual Studio Team Edition进行单元测试
E.1 测试驱动开发
E.2 运行测试
E.3 测试现有代码
E.4 测试列表和测试运行配置
E.5 建立正确的测试环境
E.6 测试私有方法
E.7 预期的错误
E.8 数据驱动测试
E.9 数据驱动测试的数据管理
E.10 测试Web服务代码
E.11 在ASP.NET内部运行测试
E.12 小结
猜您喜欢