05 输入安全.ppt

  1. 1、本文档共39页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
05 输入安全.ppt

第五章 输入安全 输入操作是用户和软件交互的手段,因此,输入时的数据安全保证显得非常重要。本章针对几个常见的输入安全问题进行讨论。 首先是传统的输入问题。讲解了输入安全的基本概念和基本意义;然后在总体上阐述了不正确输入的预防措施和预防策略。接下来针对几个典型问题:数字输入安全、字符串输入安全、环境变量安全等进行了详细讲解;最后对文件名安全进行了阐述。 另外,本章还讲解了数据库输入安全的若干话题。首先对数据库进行了简单介绍,然后针对数据库的恶意输入进行了分析,并提出了几种简单的解决方案;接下来对账户和口令等问题进行了描述,也提出了解决的方法。 不过,实际的软件工程过程中,输入方面的隐患可能表现在很多方面,本章的内容不可能涵盖所有的方面,因此,需要用户针对具体情况提出相应的解决方案。 5.1 输入安全 5.1.1 输入安全概述 输入是一个很广泛的概念,既是用户和软件之间的交互手段,也是软件内部模块之间的交互手段。针对软件用户的输入有很多类型,如: 用户在软件上输入一个命令,进行相应操作; 用户输入自己的账号密码,进行登录验证; 用户输入一个关键字,进行查询;等等。 模块之间进行数据传递时,也会有相应输入,如: 一个模块调用另一个模块时,输入一些参数; 一个模块读取一个配置文件,来对自己的行为进行配置;等等。 从程序本身的角度讲,很多情况下,软件的安全问题就出在输入;从攻击者的角度讲,输入是进行攻击的重要手段。 经过调查总结,我们认为,大部分的软件安全问题来源于:应用程序接受输入数据前,没有进行安全性验证。 下面举一个例子来说明这个问题。如代码hello.p ,是一个Linux的Shell脚本,在Linux下,可以用任意编辑器编写。 将该代码保存为在Linux下,并赋予执行权限,然后进入Linux的Shell命令行,运行该程序: 上面的斜体“Guokehua”,表示用户的输入。从上面的内容可以看出,输入“Guokehua”之后,程序显示: 运行正常。但是该程序如果这样输入: 则显示: 我们都知道,ls是linux中列出当前目录下所有文件的命令。从上面的结果可以看出,ls命令在输入时被带进去了,这样,程序就会显示当前目录下的所有文件。很明显,如果任由用户输入而不进行检查,用户就可以输入其他对系统有害的命令,如rm(删除)命令,那带来的危害是巨大的。 因此,该代码是不安全的。 解决上面问题的方法显然是进行安全性验证。一句话,对于编程人员来说,程序的所有输入数据,在被进行安全性验证之前,都必须要被认为是有害的。一旦忽略了这条规则,程序就可能遭受攻击。 以上规则说起来很容易,也容易理解,但是在传统情况下,安全性验证往往被忽略掉。其主要原因是: 1:在同一软件中,由于每一个输入到达最后的执行模块的过程中,都需要经过许多关口,每个关口都有可能进行检查。但就是因为这样,许多的开发人员都回避对输入的检查,因为他们一般假定这些数据在通过其他关口时,已经由其他关口的应用程序函数检查过了,他们不愿意牺牲性能去对数据进行多次校验。结果导致大家都没有进行验证。 2:随着软件的分工,现在许多应用程序的功能都分块分布在不同的机器上(如客户机器和服务器上,或者对等机器上),开发人员有充足理由依赖应用程序的其他模块提供安全的检验。 但是从上面的例子我们又可以看出,输入安全解决不好,在严重的情况下,可能会带来巨大的危害。 提示 : 下面给出一个输入安全的案例1。2003年7月,计算机应急反应小组协调中心报告了Microsoft Windows的DirectX MIDI库中一组危险的漏洞。 DirectXMIDI库是用于播放MIDI格式音乐的底层Windows库。但是这个库没有去检查 MIDI 文件中的所有数据值:如text、copyright和其他域中的数据,而用户如果输入错误的值,则可能导致这个库的失效。 攻击者可以利用这一漏洞让系统去执行他们想要执行的任何代码。其方法为:发布一个网页,当用户察看这个网页时,相当于用户在执行本地DirectX MIDI库中的内容;因为 Internet Explorer在察看一个包含MIDI文件链接的网页时,会自动加载那个文件并播放它。因此,攻击者如果输入设计足够精巧,则可以利用这个库的漏洞来做很多事情,如: 删除用户计算机的所有文件; 将用户的一些机密文件通过电子邮件发送到攻击者的邮箱; 让机器崩溃;等等。 5.1.2 预防不正确的输入 很明显,要想防御应用程序可能受到的输入攻击,最简单且最有效的方法是:在对输入进行任何一步处理之前,必须要对数据安全进行验证。 数据安全验证,说起来比较容易,做起来要考虑很多问题。并且就是因为被很多软件开发者感觉太容易了,反而会忽略科学的

文档评论(0)

zzqky + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档