资源预览内容
第1页 / 共22页
第2页 / 共22页
第3页 / 共22页
第4页 / 共22页
第5页 / 共22页
第6页 / 共22页
第7页 / 共22页
第8页 / 共22页
第9页 / 共22页
第10页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第三章软件安全,中央财经大学 信息学院,本章学习要点,了解软件安全隐患的来源 了解软件生命周期中的安全问题 掌握基本安全编程的原理及方法,包括内存安全, 线程/进程安全等 掌握应用安全编程的原理及方法,包括Web编程安 全,RPC和组件安全等 了解软件安全测试的涵盖层面,本章主要内容,3.1 软件安全概述 3.2 软件生命周期的安全问题 3.3 基本安全编程 3.4 应用安全编程 3.5 软件安全测试,3.1 软件安全概述,3.1.1 软件安全隐患的表现 软件在运行过程中不稳定,出现异常现象、得不 到正常结果或者在特殊情况下由于一些原因造成 系统崩溃 黑客利用各种方式达到窃取信息、破坏系统等目 的,3.1.2 软件安全隐患的成因 软件开发者的角度: 软件生产没有严格遵守软件工程流程 编程人员没有采用科学的编程方法 测试不到位(不过有时是无法到位) 软件工程客观角度: 软件复杂性和工程进度的平衡 安全问题的不可预见性 由于软件需求的变动 软件组件之间的交互的不可预见性,3.1 软件安全概述,3.2 软件生命周期的安全性问题,3.2.1 软件开发生命周期回顾 软件开发生命周期可以包括5个阶段: 分析阶段 设计阶段 编码阶段 测试阶段 维护阶段,3.2.2 软件安全威胁建模 威胁建模过程可以包括5个阶段: 在项目组中成立一个安全小组 分解系统需求 确定系统可能面临哪些威胁 选择应付威胁或者缓和威胁的方法 确定最终技术,3.2 软件生命周期的安全性问题,3.2.3 软件安全性测试 普通的功能测试的主要目的是: 确保软件不会去完成没有预先设计的功能 确保软件能够完成预先设计的功能 安全测试有如下特点: 非常灵活,测试用例没有太多的预见性 没有固定的步骤可以遵循 工作量大,并且不能保证完全地加以解,3.2 软件生命周期的安全性问题,3.2.4 软件维护和漏洞响应 正常的漏洞响应可以大致分为以下4个阶段: (1)发现漏洞通知厂商 (2)确认漏洞和风险评估 (3)修复漏洞 (4)发布补丁及安全简报,对外公布安全补,3.2 软件生命周期的安全性问题,3.3 基本安全编程,3.3.1 内存安全 缓冲区溢出 堆溢出 缓冲区溢出攻击及防,3.3.2 线程/进程安全 线程同步安全 线程协作安全 线程死锁安全,3.3 基本安全编程,3.3.3 输入安全 数字输入安全 字符串输入安全 文件名安全 数据库输入安,3.3 基本安全编程,3.4 应用安全编程,3.4.1 面向对象的编程安全 内存分配与释放 静态成员安,3.4 应用安全编程,3.4.2 Web编程安全 避免URL操作攻击 页面状态值安全 Web跨站脚本攻击 SQL注人,3.4 应用安全编程,3.4.2 Web编程安全 避免URL操作攻击 页面状态值安全 Web跨站脚本攻击 SQL注人,3.4 应用安全编程,3.4.4 远程调用和组件安全 远程调用安全 ActiveX安全 JavaApplet安,3.5 软件安全测试,3.5.1 软件安全问题测试 软件的安全需求包括: 数据保密和完整可用; 通信过程中的身份认证、授权、访问控制; 通信方的不可抵赖; 隐私保护、安全管理; 软件运行过程中的安全漏洞,等等。,3.5 软件安全测试,3.5.1 软件安全问题测试,3.5 软件安全测试,3.5.1 软件安全问题测试 软件安全测试的步骤: 1. 基于前面设计阶段制定的威胁模型,设计测试计划 2. 将安全测试的最小组件单位进行划分,并确定组件的输 入格式 3. 根据各个接口可能遇到的威胁,或者系统的潜在漏洞, 对接口进行分级 4. 确定输入数据,设计测试用例 5. 攻击应用程序,查看其效果 6. 总结测试结果,提出解决方案,3.5 软件安全测试,3.5.2 软件安全审查 1. 代码安全审查 2. 配置复查 3. 文档安全审查,3.5 软件安全测试,3.5.3 软件性能优化 1. 数据优化 2. 算法优化 3. 应用优化 4. 数据库的优,思考题,1. 软件安全问题的出现,直接的感受者一般是用户。 (1)站在用户的角度,举出两个因为编程安全问题被忽略而 造成隐患的例子。 (2)站在程序员角度,分析其原因。 2. 试编写一个包含堆栈溢出漏洞的代码,用命令行来运行, 并进行攻击。 3. 线程1首先用Pen写字,然后用Pencil写字;线程2首先用 Pencil写字,然后用Pen写字;编写一个因为线程1等待Pencil, 线程2等待Pen而造成死锁的例子,并提出解决方法。 4. 在Windows中设计一个不安全的文件名,然后测试。 5. 写一段静态成员不安全的代码。 6. Cookie方法的安全弱点在哪里?怎样解决? 7. 通过SQL注入可以实现数据库表的删除,怎样通过授权来防 范?,
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号