软件安全编码ppt课件.pptx
《软件安全编码ppt课件.pptx》由会员分享,可在线阅读,更多相关《软件安全编码ppt课件.pptx(29页珍藏版)》请在三一办公上搜索。
1、第8章 软件安全编码,南京师范大学计算机科学与技术学院,陈 波,本讲要点,1. 软件安全编码概述2. 开发语言的安全性3. 安全编码实践4. 应用案例,1. 软件安全编码概述,(1)主要工作包括:选择安全的编程语言版本(配置)管理代码检测安全编译,1. 软件安全编码概述,(1)主要工作包括:1)选择安全的编程语言所谓安全的编程语言是指那些具有对缓冲区、指针和内存进行管理能力而避免发生软件安全问题的语言。类型安全语言就属于安全的编程语言。传统的C语言不是类型安全语言。C#语言拥有内建到语言中的许多安全机制,包括类型安全元素、代码访问安全和基于角色的安全,这些安全机制都包括在.NET框架中,因而属
2、于类型安全语言范畴。Java也属于类型安全的语言,它可以确保操作仅能应用于适当的类型,使程序员能够制定新的抽象类型和签名,防止没有经过授权的代码对特定的值实施操作。,1. 软件安全编码概述,(1)主要工作包括:2)版本(配置)管理不仅能够保证开发团队正在使用的程序版本是正确的,同时在必要的情况下也能提供回退到上一个版本的功能;还提供了跟踪所有权和程序代码变化的能力。安全管理专家可以通过对每一个版本的攻击面分析所隐含的安全问题,把握软件安全的演化趋势。可以降低漏洞再生的可能性。例如,已经修复的漏洞补丁在无意中会被覆盖,从而出现漏洞再生的问题。配置管理贯穿于软件开发、部署和运维过程。在软件编码开发
3、阶段,配置管理较多地关注源代码的版本管理和控制;当软件完成部署处于运行状态的时候,配置管理应包括软件配置参数、操作、维护和废弃等系列详细内容。,1. 软件安全编码概述,(1)主要工作包括:3)代码检测对代码质量进行检查,发现是否存在可利用漏洞的过程。根据代码检测时代码所处的状态,可以将代码分析分为两种类型:代码静态检测和代码动态检测。代码静态检测是指,不在计算机上实际执行所检测的程序,而是采用人工审查或类似动态分析的方法,通常借助相关的静态分析工具。代码动态检测是指,实际运行代码时进行检测的方法。通常依靠系统编译程序和动态检查工具实现检测,但完成后可能仍会存在与安全相关的、在编译阶段发现不了、
4、运行阶段又很难定位的错误。工业界目前普遍采用的代码动态分析是进行模糊测试和渗透测试。,1. 软件安全编码概述,(1)主要工作包括:4)安全编译采用最新的集成编译环境,并选择使用这些编译环境提供的安全编译选项和安全编译机制。如在VS中编译时,开启/GS选项对缓冲区的安全进行检查。在一个安全的环境中进行。例如:对代码编译系统实施安全访问控制;使用访问控制列表防止未授权用户的访问;使用软件版本控制方法;尽量使用自动化编译工具和脚本。对应用环境的真实模拟多样化编译技术应用,1. 软件安全编码概述,(2)基本原则包括:CERT安全编码建议验证输入(Validate input)留意编译器警告(Heed
5、compiler warnings)安全策略的架构和设计(保持简单性(Keep it simple)默认拒绝(Default deny)坚持最小权限原则(Adhere to the principle of least privilege)清洁发送给其他系统的数据(Sanitize data sent to other systems),1. 软件安全编码概述,基本原则包括:CERT安全编码建议纵深防御(Practice defense in depth)使用有效的质量保证技术(Use effective quality assurance techniques)采用安全编码标准(Adopt
6、a secure coding standard)其他安全编码原则最少反馈检查返回,2. 开发语言的安全性,(1)C语言安全编码C语言安全编码的注意点对内存访问错误的检测和修改。指针引用是C中最灵活、最核心、最复杂,也是最易出错的部分。随机数的选取和使用问题。C语言没有提供异常处理机制,其异常检测处理要由程序员预设完成。,2. 开发语言的安全性,(1)C语言安全编码C语言中针对缓冲区溢出的主要解决措施使用安全字符串函数如果在开发过程中无法避免使用这些不安全函数,应该遵循以下3个原则:1)应要求代码传递缓冲区的长度;2)探测内存;3)正确使用函数参数。开启编译器的安全编译选项,2. 开发语言的安
7、全性,(2)Java语言安全编码Java已有的安全机制,2. 开发语言的安全性,(2)Java语言安全编码语言层安全语言层安全是通过编译器的编译来实现,即编译成功则说明达到了语言层安全性。Java在语言层提供如下安全机制:通过某些关键字(如private、protected)定义代码的可见性范围(即权限)。通过类型规则确保程序运行时变量的值始终与声明的类型一致,在函数或方法调用时形参与实参的类型匹配。Java还采用自动内存管理、垃圾收集站、字符串和数组的范围检查等方法,来确保Java语言的安全性。,2. 开发语言的安全性,(2)Java语言安全编码字节码层安全 在字节码层次,Java提供两种保
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 安全 编码 ppt 课件
链接地址:https://www.31ppt.com/p-1420254.html