简介
本书共分为16章,针对安全编程技术进行讲解,主要涵盖了基本安全
编程、应用安全编程、数据保护编程以及其他内容共四大部分:第一部分
包含内存安全、线程/进程安全、异常/错误处理安全、输入安全,第二部
分包含国际化安全、面向对象的编程安全、Web编程安全、权限控制、远程
调用和组件安全、避免拒绝服务攻击等内容,第三部分包含数据加密保护
、其他保护、数字签名等内容,最后一部分包含软件安全测试和代码性能
调优。每章后面都有配套练习,用于对本章进行总结演练。
针对安全编程技术,本书不局限于某一门特定语言,而是将编程过程
中的通用安全问题进行全面总结,逐步引领读者从基础到各个知识点进行
学习,以便能开发出安全可靠的系统。全书内容由浅入深,并辅以大量的
实例说明,每一个章节以实际案例为起点进行讲解,通俗易懂。
全书所有实例的源代码均可在清华大学出版社的网站上下载,供读者
学习参考使用。
本书可作为有一定编程基础的程序员的学习用书,也可供有经验的开
发人员深入学习使用,更可以为高等学校、培训班作为教材使用,对于缺
乏安全编程实战经验的程序员而言,阅读本书可以快速积累经验,提高编
程水平。
目录
第1章安全编程概述
1.1软件的安全问题
1.1.1任何软件都是不安全的
1.1.2软件不安全性的几种表现
1.1.3软件不安全的原因
1.2在软件开发生命周期中考虑安全问题
1.2.1软件设计阶段威胁建模
1.2.2安全代码的编写
1.2.3软件的安全性测试
1.2.4漏洞响应和产品的维护
1.3本书的内容
1.3.1编程中的安全
1.3.2针对信息安全的编程
1.3.3其他内容
小结
练习
参考文献
第2章内存安全
2.1缓冲区溢出
2.1.1缓冲区
.2.1.2缓冲区溢出
2.1.3缓冲区溢出案例
2.1.4堆溢出
2.1.5缓冲区溢出攻击
2.1.6防范方法
2.2整数溢出
2.2.1整数的存储方式
2.2.2整数溢出
2.2.3解决方案
2.3数组和字符串问题
2.3.1数组下标问题
2.3.2字符串格式化问题
小结
练习
参考文献
第3章线程/进程安全
3.1线程机制
3.1.1为什么需要线程
3.1.2线程机制和生命周期
3.2线程同步安全
3.2.1线程同步
3.2.2案例分析
3.2.3解决方案
3.3线程协作安全
3.3.1线程协作
3.3.2案例分析
3.3.3解决方案
3.4线程死锁安全
3.4.1线程死锁
3.4.2案例分析
3.4.3解决方案
3.5线程控制安全
3.5.1安全隐患
3.5.2案例分析
3.5.3解决方案
3.6进程安全
3.6.1进程概述
3.6.2进程安全问题
小结
练习
参考文献
第4章异常/错误处理中的安全
4.1异常/错误的基本机制
4.1.1异常的出现
4.1.2异常的基本特点
4.2异常捕获中的安全
4.2.1异常的捕获
4.2.2异常捕获中的安全
4.3异常处理中的安全
4.3.1finally的使用安全
4.3.2异常处理的安全
4.4面向过程异常处理中的安全问题
4.4.1面向过程的异常处理
4.4.2安全准则
小结
练习
第5章输入安全
5.1一般性讨论
5.1.1输入安全概述
5.1.2预防不正确的输入
5.2几种典型的输入安全问题
5.2.1数字输入安全问题
5.2.2字符串输入安全问题
5.2.3环境变量输入安全问题
5.2.4文件名安全问题
5.3数据库输入安全问题
5.3.1数据库概述
5.3.2数据库的恶意输入
5.3.3账户和口令问题
小结
练习
参考文献
第6章国际化安全
6.1国际化的基本机制
6.1.1国际化概述
6.1.2国际化过程
6.2国际化中的安全问题
6.2.1字符集
6.2.2字符集转换
6.2.3i18n缓冲区溢出问题
6.3推荐使用unicode
小结
练习
参考文献
第7章面向对象中的编程安全
7.1面向对象概述
7.1.1面向对象基本原理
7.1.2面向对象的基本概念
7.2对象内存分配与释放
7.2.1对象分配内存
7.2.2对象内存释放
7.2.3对象线程安全
7.2.4对象序列化安全
7.3静态成员安全
7.3.1静态成员的机理
7.3.2静态成员需要考虑的安全问题
7.3.3利用单例提高程序性能
小结
练习
第8章web编程安全
8.1web概述
8.1.1web运行的原理
8.1.2web编程
8.2避免url操作攻击
8.2.1url的概念及其工作原理
8.2.2url操作攻击
8.2.3解决方法
8.3页面状态值安全
8.3.1url传值
8.3.2表单传值
8.3.3cookie方法
8.3.4session方法
8.4web跨站脚本攻击
8.4.1跨站脚本攻击的原理
8.4.2跨站脚本攻击的危害
8.4.3防范方法
8.5sql注入
8.5.1sql注入的原理
8.5.2sql注入攻击的危害
8.5.3防范方法
8.6避免web认证攻击
8.6.1web认证攻击概述
8.6.2web认证攻击防范
小结
练习
第9章权限控制
9.1权限控制概述
9.1.1权限控制分类
9.1.2用户认证方法
9.2权限控制的开发
9.2.1开发思想
9.2.2基于代理模式的权限控制开发
9.2.3基于aop的权限控制开发
9.3单点登录
9.3.1单点登录概述
9.3.2单点登录中账号管理
9.3.3单点登录实现
9.4权限控制的管理
小结
练习
第10章远程调用和组件安全
10.1远程调用安全
10.1.1远程调用概述
10.1.2安全问题
10.2activex安全
10.2.1activex概述
10.2.2安全问题
10.3javaapplet安全
10.3.1javaapplet概述
10.3.2安全问题
10.4dcom安全
10.4.1dcom概述
10.4.2安全问题
10.5ejb安全
10.5.1ejb概述
10.5.2开发安全的ejb
10.6corba安全
10.6.1corba概述
10.6.2corba安全概述
小结
练习
参考文献
第11章避免拒绝服务攻击
11.1拒绝服务攻击
11.2几个拒绝服务攻击的案例
11.2.1程序崩溃攻击
11.2.2资源不足攻击
11.2.3恶意访问攻击
小结
练习
参考文献
第12章数据的加密保护
12.1加密概述
12.1.1加密的应用
12.1.2常见的加密算法
12.2实现对称加密
12.2.1用java实现des
12.2.2用java实现3des
12.2.3用java实现aes
12.3实现非对称加密
12.3.1用java实现rsa
12.3.2dsa算法
12.4实现单向加密
12.4.1用java实现md5
12.4.2用java实现sha
12.4.3用java实现消息验证码
12.5密钥安全
12.5.1随机数安全
12.5.2密钥管理安全
小结
练习
参考文献
第13章数据的其他保护
13.1数据加密的限制
13.2密码保护与验证
13.3内存数据的保护
13.3.1避免将数据写入硬盘文件
13.3.2从内存擦除数据
13.4注册表安全
13.4.1注册表简介
13.4.2注册表安全
13.5数字水印
13.5.1数字水印简介
13.5.2数字水印的实现
13.6软件版权保护
小结
练习
第14章数字签名
14.1数字签名概述
14.1.1数字签名的应用
14.1.2数字签名的过程
14.2实现数字签名
14.2.1用rsa实现数字签名
14.2.2用dsa实现数字签名
14.3利用数字签名解决实际问题
14.3.1解决篡改问题
14.3.2解决抵赖问题
小结
练习
第15章软件安全测试
15.1软件测试概述
15.1.1软件测试的概念
15.1.2软件测试的目的和意义
15.1.3软件测试方法
15.2针对软件安全问题的测试
15.2.1软件安全测试的必要性
15.2.2软件安全测试的过程
15.3安全审查
15.3.1代码的安全审查
15.3.2配置复查
15.3.3文档的安全审查
小结
练习
参考文献
第16章程序性能调优
16.1数据优化
16.1.1优化变量赋值
16.1.2优化字符串
16.1.3选择合适的数据结构
16.1.4使用尽量小的数据类型
16.1.5合理使用集合
16.2算法优化
16.2.1优化基本运算
16.2.2优化流程
16.3应用优化
16.3.1优化异常处理
16.3.2单例
16.3.3享元
16.3.4延迟加载
16.3.5线程同步中的优化
16.4数据库的优化
16.4.1设计上的优化
16.4.2sql语句优化
16.4.3其他优化
小结
练习
1.1软件的安全问题
1.1.1任何软件都是不安全的
1.1.2软件不安全性的几种表现
1.1.3软件不安全的原因
1.2在软件开发生命周期中考虑安全问题
1.2.1软件设计阶段威胁建模
1.2.2安全代码的编写
1.2.3软件的安全性测试
1.2.4漏洞响应和产品的维护
1.3本书的内容
1.3.1编程中的安全
1.3.2针对信息安全的编程
1.3.3其他内容
小结
练习
参考文献
第2章内存安全
2.1缓冲区溢出
2.1.1缓冲区
.2.1.2缓冲区溢出
2.1.3缓冲区溢出案例
2.1.4堆溢出
2.1.5缓冲区溢出攻击
2.1.6防范方法
2.2整数溢出
2.2.1整数的存储方式
2.2.2整数溢出
2.2.3解决方案
2.3数组和字符串问题
2.3.1数组下标问题
2.3.2字符串格式化问题
小结
练习
参考文献
第3章线程/进程安全
3.1线程机制
3.1.1为什么需要线程
3.1.2线程机制和生命周期
3.2线程同步安全
3.2.1线程同步
3.2.2案例分析
3.2.3解决方案
3.3线程协作安全
3.3.1线程协作
3.3.2案例分析
3.3.3解决方案
3.4线程死锁安全
3.4.1线程死锁
3.4.2案例分析
3.4.3解决方案
3.5线程控制安全
3.5.1安全隐患
3.5.2案例分析
3.5.3解决方案
3.6进程安全
3.6.1进程概述
3.6.2进程安全问题
小结
练习
参考文献
第4章异常/错误处理中的安全
4.1异常/错误的基本机制
4.1.1异常的出现
4.1.2异常的基本特点
4.2异常捕获中的安全
4.2.1异常的捕获
4.2.2异常捕获中的安全
4.3异常处理中的安全
4.3.1finally的使用安全
4.3.2异常处理的安全
4.4面向过程异常处理中的安全问题
4.4.1面向过程的异常处理
4.4.2安全准则
小结
练习
第5章输入安全
5.1一般性讨论
5.1.1输入安全概述
5.1.2预防不正确的输入
5.2几种典型的输入安全问题
5.2.1数字输入安全问题
5.2.2字符串输入安全问题
5.2.3环境变量输入安全问题
5.2.4文件名安全问题
5.3数据库输入安全问题
5.3.1数据库概述
5.3.2数据库的恶意输入
5.3.3账户和口令问题
小结
练习
参考文献
第6章国际化安全
6.1国际化的基本机制
6.1.1国际化概述
6.1.2国际化过程
6.2国际化中的安全问题
6.2.1字符集
6.2.2字符集转换
6.2.3i18n缓冲区溢出问题
6.3推荐使用unicode
小结
练习
参考文献
第7章面向对象中的编程安全
7.1面向对象概述
7.1.1面向对象基本原理
7.1.2面向对象的基本概念
7.2对象内存分配与释放
7.2.1对象分配内存
7.2.2对象内存释放
7.2.3对象线程安全
7.2.4对象序列化安全
7.3静态成员安全
7.3.1静态成员的机理
7.3.2静态成员需要考虑的安全问题
7.3.3利用单例提高程序性能
小结
练习
第8章web编程安全
8.1web概述
8.1.1web运行的原理
8.1.2web编程
8.2避免url操作攻击
8.2.1url的概念及其工作原理
8.2.2url操作攻击
8.2.3解决方法
8.3页面状态值安全
8.3.1url传值
8.3.2表单传值
8.3.3cookie方法
8.3.4session方法
8.4web跨站脚本攻击
8.4.1跨站脚本攻击的原理
8.4.2跨站脚本攻击的危害
8.4.3防范方法
8.5sql注入
8.5.1sql注入的原理
8.5.2sql注入攻击的危害
8.5.3防范方法
8.6避免web认证攻击
8.6.1web认证攻击概述
8.6.2web认证攻击防范
小结
练习
第9章权限控制
9.1权限控制概述
9.1.1权限控制分类
9.1.2用户认证方法
9.2权限控制的开发
9.2.1开发思想
9.2.2基于代理模式的权限控制开发
9.2.3基于aop的权限控制开发
9.3单点登录
9.3.1单点登录概述
9.3.2单点登录中账号管理
9.3.3单点登录实现
9.4权限控制的管理
小结
练习
第10章远程调用和组件安全
10.1远程调用安全
10.1.1远程调用概述
10.1.2安全问题
10.2activex安全
10.2.1activex概述
10.2.2安全问题
10.3javaapplet安全
10.3.1javaapplet概述
10.3.2安全问题
10.4dcom安全
10.4.1dcom概述
10.4.2安全问题
10.5ejb安全
10.5.1ejb概述
10.5.2开发安全的ejb
10.6corba安全
10.6.1corba概述
10.6.2corba安全概述
小结
练习
参考文献
第11章避免拒绝服务攻击
11.1拒绝服务攻击
11.2几个拒绝服务攻击的案例
11.2.1程序崩溃攻击
11.2.2资源不足攻击
11.2.3恶意访问攻击
小结
练习
参考文献
第12章数据的加密保护
12.1加密概述
12.1.1加密的应用
12.1.2常见的加密算法
12.2实现对称加密
12.2.1用java实现des
12.2.2用java实现3des
12.2.3用java实现aes
12.3实现非对称加密
12.3.1用java实现rsa
12.3.2dsa算法
12.4实现单向加密
12.4.1用java实现md5
12.4.2用java实现sha
12.4.3用java实现消息验证码
12.5密钥安全
12.5.1随机数安全
12.5.2密钥管理安全
小结
练习
参考文献
第13章数据的其他保护
13.1数据加密的限制
13.2密码保护与验证
13.3内存数据的保护
13.3.1避免将数据写入硬盘文件
13.3.2从内存擦除数据
13.4注册表安全
13.4.1注册表简介
13.4.2注册表安全
13.5数字水印
13.5.1数字水印简介
13.5.2数字水印的实现
13.6软件版权保护
小结
练习
第14章数字签名
14.1数字签名概述
14.1.1数字签名的应用
14.1.2数字签名的过程
14.2实现数字签名
14.2.1用rsa实现数字签名
14.2.2用dsa实现数字签名
14.3利用数字签名解决实际问题
14.3.1解决篡改问题
14.3.2解决抵赖问题
小结
练习
第15章软件安全测试
15.1软件测试概述
15.1.1软件测试的概念
15.1.2软件测试的目的和意义
15.1.3软件测试方法
15.2针对软件安全问题的测试
15.2.1软件安全测试的必要性
15.2.2软件安全测试的过程
15.3安全审查
15.3.1代码的安全审查
15.3.2配置复查
15.3.3文档的安全审查
小结
练习
参考文献
第16章程序性能调优
16.1数据优化
16.1.1优化变量赋值
16.1.2优化字符串
16.1.3选择合适的数据结构
16.1.4使用尽量小的数据类型
16.1.5合理使用集合
16.2算法优化
16.2.1优化基本运算
16.2.2优化流程
16.3应用优化
16.3.1优化异常处理
16.3.2单例
16.3.3享元
16.3.4延迟加载
16.3.5线程同步中的优化
16.4数据库的优化
16.4.1设计上的优化
16.4.2sql语句优化
16.4.3其他优化
小结
练习
安全编程技术
光盘服务联系方式: 020-38250260 客服QQ:4006604884
云图客服:
用户发送的提问,这种方式就需要有位在线客服来回答用户的问题,这种 就属于对话式的,问题是这种提问是否需要用户登录才能提问
Video Player
×
Audio Player
×
pdf Player
×