北邮软件安全期末复习整理

合集下载

北京邮电大学-软件安全测评-04安全设计

北京邮电大学-软件安全测评-04安全设计
授权决定经过认证的身份可以做些什么和 可以访问哪些资源。 不正确的或是较差的授权会导致信息泄露 和数据被篡改。 纵深防御是适用于应用程序的授权策略的 关键安全原则。

3 软件安全设计方法 ——授权
下列做法可以改善应用程序的授权: 使用多重把关。 限制用户访问系统级的资源。 考虑授权的粒度

3 软件安全设计方法 ——认证
下面的做法可以改善应用程序的认证: 将公共区域和限制区域分离 对终端用户帐户使用帐户锁定策略 支持密码有效期 能够禁用帐户 不在用户区保存密码 需要强有力的密码。 不要用明文发送密码 保护认证Cookie
3 软件安全设计方法 ——授权

2 软件安全设计原则 ——原则4:最小特权
例如,如果您没养宠物,只需要一位朋友 偶尔收取您的邮件,那么您应当只给他邮 箱钥匙。 即使您的朋友可能找到滥用那个特权的办 法,但至少您不必担心出现其它滥用的可 能性。 如果您不必要地给出了房门钥匙,那么所 有一切都可能发生。

2 软件安全设计原则 ——原则5:隔离

隔离原则背后的基本思想是如果我们将系 统分成尽可能多的独立单元,那么我们可 以将对系统可能造成损害的量降到最低
2 软件安全设计原则 ——原则5:隔离
例如,潜水艇拥有许多不同的船舱,每个 船舱都是独立密封,就应用了这个原则; 如果船体裂开了一个口子而导致一个船舱 中充满了水,其它船舱不受影响。 船只的其余部分可以保持其完整性,人们 就可以逃往潜水艇未进水的部分而幸免于 难。

3 软件安全设计方法 ——加密技术
加密技术的基本形式规定如下: 隐私(保密性)。这项服务始终为机密保 密。 不可抵赖(真实性)。这项服务保证用户 不能否认发送过某特定消息。 防篡改(完整性)。这项服务防止数据被 更改。 认证。这项服务确定消息发送者的身份。

2021年北京邮电大学世纪学院软件工程专业《计算机组成原理》科目期末试卷A(有答案)

2021年北京邮电大学世纪学院软件工程专业《计算机组成原理》科目期末试卷A(有答案)

2021年北京邮电大学世纪学院软件工程专业《计算机组成原理》科目期末试卷A(有答案)一、选择题1、地址线A15~A0(低),若选取用16K×1位存储芯片构成64KB存储器,则应由地址码()译码产生片选信号。

A.A15,A14B.A0,AlC.A14,A13D.A1,A22、容量为64块的Cache采用组相联映射方式,字块大小为128个字,每4块为一组。

如果主存为4K块,且按字编址,那么主存地址和主存标记的位数分别为()。

A.16,6B.17,6C.18,8 D .19,83、并行加法器中,每位全和的形成除与本位相加两数数值位有关外,还与()有A.低位数值大小B.低位数的全和C.高位数值大小D.低位数送来的进位4、一个浮点数N可以用下式表示:N=mr me,其中,e=rc g;m:尾数的值,包括尾数采用的码制和数制:e:阶码的值,一般采用移码或补码,整数;Tm:尾数的基;re:阶码的基;p:尾数长度,这里的p不是指尾数的:进制位数,当ra=16时,每4个二进制位表示一位尾数;q:阶码长度,由于阶码的基通常为2,因此,在一般情况下,q就是阶码部分的二进制位数。

研究浮点数表示方式的主要目的是用尽量短的字长(主要是阶码字长q和尾数字长的和)实现尽可能大的表述范围和尽可能高的表数精度。

根据这一目的,上述6个参数中只有3个参数是浮点数表示方式要研究的对象,它们是()。

A.m、e、rmB. rm、e、rmC.re、p、qD. rm、p、q5、信息序列16位,若想构成能纠正一位错、发现两位错的海明码,至少需要加()位校验位。

A.4B.5C.6D.76、某总线共有88根信号线,其中数据总线为32根,地址总线为20根,控制总线36根,总线工作频率为66MHz、则总线宽度为(),传输速率为()A.32bit 264MB/sB.20bit 254MB/sC.20bit 264MB/sD.32bit 254MB/s7、控制总线主要用来传送()。

2014年北邮如软件工程复习提纲

2014年北邮如软件工程复习提纲

一、基本概念1、生命周期模型a)瀑布模型;b)基于瀑布模型的其他变种;c)现代模型:UP及极限编程;d)模型的由来及实际价值2、软件需求分析a)需求分析的目的b)需求分析的对象c)需求分析的难点d)需求管理的内容3、软件概要设计a)软件的结构,分层结构b)模块的耦合与内聚;c)面向对象的设计原则;d)模块的优化原则;e)模块的控制范围与作用范围;4、软件详细设计与实现a)详细设计是概要设计的延续,是编码之前的必要工作;程序流程图、NS图、PDL以及UML的活动图都是描述程序结构的方法;b)软件实现,从软工的角度需要将代码文档化,提升软件的阅读性、可维护性,为此,使用序言性注释及功能性注释提升可阅读性;5、软件测试a)软件测试的对象;b)软件测试的方法;c)软件测试流程:软件配置,测试配置d)软件测试用例:有效和无效的测试用例同样重要;e)软件测试的策略:单元测试、集成测试、确认测试及系统测试等;6、软件维护与项目管理a)软件维护的周期;b)软件维护与软件开发的关系;c)软件维护的类型;d)软件项目的定义及特点;e)软件项目成功与失败的条件;f)软件项目管理的重要过程:启动、计划、执行、监控及结束二、软件工程方法1、面向对象方法a)需求分析:最终形成“软件需求分析规格说明书”i.领域模型:1.UML类图(无方法):使用概念类描述业务背景的重要知识;2.UML活动图:描述一个或多个业务对象在业务流程中的交互过程;ii.用例模型:1.用例图:使用UML用例图描述功能需求,需要掌握基本用例与子用例之间的包含和扩展关系;2.用例说明:使用标准的格式说明用例图中每个用例的交互过程;3.系统顺序图:使用UML交互图进一步明确角色与系统之间交互的消息名称与参数;4.操作契约:明确系统顺序图中每个交互的消息进入系统后有哪些概念类被激活参与该消息的服务并返回规定的内容;这个环节是开始软件概要设计的基础。

b)概要设计:最终形成“软件概要设计说明书”,设计模型由以下两个部分构成i.系统的动态结构:也称为用例实现过程设计1.首先确定软件的基本设计结构,本课程需要大家掌握分层结构:控制器层、业务逻辑层以及数据持久化层;2.用例级别的设计过程:针对系统顺序图中的每个消息进行设计,并参考消息对应的操作契约,确定该消息进入系统后接受该消息的控制器层对象、业务逻辑层对象以及持久化层对象,以及这些对象之间的交互(确定每个消息的名称和参数)ii.系统的静态结构1.用例级别的静态结构:针对该用例已得到的所有交互图,确定每个层次的软件对象及其之间的调用关系(或者依赖关系)形成用例级别的类图(包括软件类的属性和方法);2.系统级别的静态结构:以同样的方式获得所有用例的静态结构类图,即系统级的静态结构类图iii.系统的数据模型:1.根据系统级别的静态结构类图,尤其是数据持久化层的软件类并参考领域模型的类图,可以进一步确定系统数据库对应的数据模型。

软件工程期末复习-北邮

软件工程期末复习-北邮

1、软件是一种(逻辑实体),而不是具体的物理实体,因而它具有抽象性。

2、需求分析研究的对象是软件项目的(用户/客户/功能+性能/功能)要求。

3、需求分析的任务就是借助于当前系统的(逻辑模型)导出目标系统的(逻辑模型),解决目标系统的(“做什么”)的问题。

4、结构化需求分析方法由对软件问题的(信息/数据)和(功能)的系统分析过程及其表示方法组成。

5、确认测试包括:有效性测试和(软件配置审查,文档审查)。

6、白盒测试的逻辑覆盖方法包括语句覆盖、(判定/判断覆盖)、条件覆盖、(判定/判断-条件覆盖)、条件组合覆盖、(路径覆盖/路径测试/基本路径测试)。

注:次序无关7、为了提高模块的独立性,模块之间最好是(数据耦合)为了提高模块的独立性,模块最好是(功能内聚)8、下列关于功能性注释不正确的说法是( B )A. 功能性注释嵌在源程序中,用于说明程序段或语句的功能以及数据的状态B. 注释用来说明程序段,需要在每一行都要加注释C. 可使用空行或缩进,以便很容易区分注释和程序D. 修改程序也应修改注释9、在UML状态图中,与转移上的事件联系在一起的瞬时操作是(动作)10、测试的关键问题是(如何选择测试用例)11、以下说法不正确的是(A)。

A.原型思想是在研究概要设计阶段的方法和技术中产生的。

B.探索型和实验型原型采用的是抛弃策略。

C.进化型原型采用的是追加策略。

D.快速原型方法是利用原型辅助软件开发的一种思想。

12、需求规格说明书的作用不包括(C)A.软件验收的依据B.用户与开发人员对软件要做什么的共同理解C.软件可行性研究的依据D.软件设计的依据13、软件结构图中,模块框之间若有直线连接,表示它们之间存在(调用关系)14、下面关于DFD中的加工的描述正确的是( C )A. 每个加工只能有一个输入流和一个输出流B. 每个加工最多有一个输入流,可以有多个输出流C. 每个加工至少有一个输入流和一个输出流D. 每个加工都是对输入流进行变换,得到输出流15、在基于数据库的信息管理系统中,数据库概念模型的设计对应于系统开发的(概要设计)阶段。

北邮《操作系统原理》期末复习题(含答案)+阶段作业汇总

北邮《操作系统原理》期末复习题(含答案)+阶段作业汇总

《操作系统》期末考试综合练习题一、填空题1、操作系统是(控制)、(管理)系统资源,方便用户使用计算机的(程序)的集合。

2、操作系统具有(资源管理)和(提供人机接口)两大基本功能。

3、最常用的存储保护机构有(界地址寄存器)和(存储器)。

4、对称式多处理器系统(SMP)含有多个CPU,这些CPU具有(平等)地位。

5、将一个运行进程可访问的虚地址的集合称为(虚拟地址空间) 。

6、根据执行的程序的性质不同,处理器可分为(核心态)和(用户态)两种状态。

7、用信号量机制来控制打印机的共享使用。

如果系统中共有2台打印机,这时已经分配了一台给某个进程使用,此时信号量的值应该是(2).8、进程可以描述为:一组具有独立功能的程序在某个(数据集合)上的一次(执行过程) 。

9、当程序运行到某条语句时,才对其逻辑地址进行计算并转化为物理地址,这种技术叫做(动态)重定位。

10、.当程序装入内存时,就对其逻辑地址进行计算并转化为物理地址,这种技术叫做(静态)重定位。

11、通常我们通过破坏(环路等待)条件和(资源独占)条件来预防死锁的发生。

12、所谓死锁状态是指在系统中的(进程),由于竞争系统资源或由于彼此通信而永远(阻塞) 。

13、多道程序的操作系统具有(并行性)和(共享性)两大特性。

14、处理器调度的主要功能是按照某种原则,将处理器分配给(就绪队列的某个) 进程。

15、中断是指CPU对系统中发生的(异步事件)的响应。

16、操作系统中,对目录的设计包括(目录内容)和(目录结构)两个部分。

17、用信号量机制来控制打印机的共享使用。

如果系统中共有5台打印机,这时,信号量的初值应该是(5).18、在虚拟存储器的概念中,目标程序中的指令和数据放置的位置称为相对地址或者(相对)地址,而CPU能直接访问的主存的物理地址又称(实存地址)。

19、当一个进程执行Signal操作,完成对信号量“加1”后,这时信号量的值是“1”。

这时,系统中还有(至少一个)个进程等待该资源.20、一个计算机的数据总线的宽度叫做这个计算机的(.字长)。

2022年北京邮电大学世纪学院软件工程专业《数据库原理》科目期末试卷A(有答案)

2022年北京邮电大学世纪学院软件工程专业《数据库原理》科目期末试卷A(有答案)

2022年北京邮电大学世纪学院软件工程专业《数据库原理》科目期末试卷A(有答案)一、填空题1、设某数据库中有作者表(作者号,城市)和出版商表(出版商号,城市),请补全如下查询语句,使该查询语句能查询作者和出版商所在的全部不重复的城市。

SELECT城市FROM作者表_____SELECT城市FROM出版商表;2、在一个关系R中,若每个数据项都是不可再分割的,那么R一定属于______。

3、对于非规范化的模式,经过转变为1NF,______,将1NF经过转变为2NF,______,将2NF经过转变为3NF______。

4、关系规范化的目的是______。

5、在SELECT命令中进行查询,若希望查询的结果不出现重复元组,应在SEL ECT语句中使用______保留字。

6、数据仓库创建后,首先从______中抽取所需要的数据到数据准备区,在数据准备区中经过净化处理______,再加载到数据仓库中,最后根据用户的需求将数据发布到______。

7、视图是一个虚表,它是从______导出的表。

在数据库中,只存放视图的______,不存放视图对应的______。

8、安全性控制的一般方法有____________、____________、____________、和____________视图的保护五级安全措施。

9、在RDBMS中,通过某种代价模型计算各种查询的执行代价。

在集中式数据库中,查询的执行开销主要包括______和______代价。

在多用户数据库中,还应考虑查询的内存代价开销。

10、若事务T对数据对象A加了S锁,则其他事务只能对数据A再加______,不能加______,直到事务T释放A上的锁。

二、判断题11、数据库的数据项之间无联系,记录之间存在联系。

()12、在关系数据库中,属性的排列顺序是可以颠倒的。

()13、并发执行的所有事务均遵守两段锁协议,则对这些事务的任何并发调度策略都是可串行化的。

()14、连接是数据库最耗时的操作。

计算机网络安全总结复习

计算机网络安全总结复习

计算机网络安全总结网络安全技术复习一、网络安全基础知识网络安全的定义:安全就是最大限度地减少数据和资源被攻击的可能性。

1、网络安全包括四个方面:物理安全、数据安全、软件安全、安全管理。

2、网络安全的目标:1、保密性(保密性是网络信息不被泄露给非授权的用户、实体、或供其利用的特性。

即防止信息泄露给未授权用户或实体,信息只为授权用户使用的特性。

) 2、完整性(完整性是网络信息未经授权不能进行改变的特性。

)3、可靠性(可靠性网络信息系统能够在规定条件下和规定时间内完成规定功能的特性。

)4、可用性(可用性是网络信息可被授权用户或实体访问并按需求使用的特性。

)5、不可抵赖性(是不可否认性。

)6、可控性(是对网络信息的传播及内容具有控制能力的特性。

)3、网络安全的威胁:(1)对加密算法的攻击(2)协议漏洞渗透(3)系统漏洞(4)拒绝服务攻击(5)计算机病毒和恶意代码的威胁4、威胁网络安全的因素:(1)自然因素(2)人为因素(3)系统本身因素。

5、网络安全防范体系6、网络安全策略(物理安全策略、访问控制策略、加密策略)7、网络安全的评估标准二、网络入侵技术1、黑客技术(黑客最早源自英文hacker,原指热衷于计算机程序的设计者和精通网络、系统、外围设备及软硬件技术的人。

这些人具有操作系统和编程语言方面的知识,通过分析知道系统中的漏洞及其原因,并公开他们的发现,与他人分享。

现在人们常常把从事网络攻击和破坏的人统称为黑客。

)黑客入侵攻击的一般过程可分踩点、扫描、查点、获取权限、提升权限、窃取信息、隐藏痕迹、创建后门等。

2、网络扫描:地址扫描、端口扫描、漏洞扫描。

常用的扫描软件:Nmap 、X —Scan 等。

3、网络监听4、木马攻击(木马是指隐藏在正常程序中的一段具有特殊功能的恶意代码,是具有破坏和删除文件、发送密码、记录键盘和拒绝服务攻击等特殊功能的后门程序。

)5、拒绝服务攻击(简称DoS,是一种最常见的攻击形式,是指一个用户占据了大量的共享资源,使系统没有剩余的资源给其他用户使用,即拒绝服务。

2022年北京邮电大学世纪学院软件工程专业《计算机系统结构》科目期末试卷A(有答案)

2022年北京邮电大学世纪学院软件工程专业《计算机系统结构》科目期末试卷A(有答案)

2022年北京邮电大学世纪学院软件工程专业《计算机系统结构》科目期末试卷A(有答案)一、选择题1、在计算机系统设计中,比较好的方法是()。

A.从上向下设计B.从下向上设计C.从两头向中间设计D.从中间开始向上、向下设计2、直接执行微指令的是( )A.汇编程序B.编译程序C.硬件D.微指令程序3、虚拟存储器常用的地址映象方式是( )A.全相联B.段相联C.组相联D.直接4、计算机组成设计不考虑()A.专用部件设置B.功能部件的集成度C.控制机构的组成D.缓冲技术5、Cache存贮器常用的地址映象方式是( )。

A.全相联映象B.页表法映象C.组相联映象D.段页表映象6、下列关于标量流水机的说法不正确的是()A.可对标量数据进行流水处理B.没有向量数据表示C.不能对向量数据进行运算D.可以对向量、数组进行运算7、与流水线最大吞吐率高低有关的是( )A.各个子过程的时间B.最快子过程的时间C.最慢子过程的时间D.最后子过程的时间8、开发并行的途径有(),资源重复和资源共享。

A.多计算机系统B.多道分时C.分布式处理系统D.时间重叠9、下列说法正确的是( )A.Cache容量一般不大,命中率不会很高B.Cache芯片速度一般比CPU的速度慢数十倍C.Cache本身速度很快。

但地址变换的速度很慢D.Cache存贮器查映象表和访问物理Cache其间可以流水,使速度与CPU匹配10、全相联地址映象是指()。

A.任何虚页都可装入主存中任何实页的位置B.一个虚页只装进固定的主存实页位置C.组之间是固定的,而组内任何虚页可以装入任何实页位置D.组间可任意装入,组内是固定装入二、填空题11、多功能流水线各功能段同时可按不同运算或功能联接工作,称此流水线为________流水线。

12、单体多字并行存储器的访问冲突包括取指令冲突,________,写数据冲突,________13、段页式虚拟存储器的内部地址映象表机构有________表和________表两部分。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

软件安全2013.61.1概述1.1.1信息安全的六性***①保密性(C, confidentiality ):信息不泄漏给非授权的用户、实体或者过程的特性,。

②完整性(I,integrity):数据未经授权不能进行改变的特性,即信息在存储或传输过程中保持不被修改、不被破坏和丢失的特性。

③可用性(A, availability ):可被授权实体访问并按需求使用的特性,即当需要时应能存取所需的信息。

④真实性:内容的真实性。

⑤可核查性:对信息的传播及内容具有控制能力,访问控制即属于可控性。

⑥可靠性:系统可靠性。

信息安全根源:复杂性、开放性(系统、标准、业务)信息安全特性:攻防特性、相对性、配角特性、动态性1.1.2软件安全威胁分类( Gary Mcgraw )①输入验证与表示:输入信任→特殊字符、编码和数字表示②API误用:调用者没有理解约定的目的③安全特征:主要指认证,访问控制,机密性,密码,权限管理等方面的内容④时间与状态:死锁、会话固定、竞争条件、不安全临时文件⑤错误处理:没有完全处理错误⑥代码质量⑦封装⑧环境OWASP的WEB安全风险分类:认证、授权、客户端攻击、命令执行、信息泄露、逻辑攻击1.1.3软件安全加固模型***1.2 缓冲区溢出原理1.2.1 缓冲区溢出原理***缓冲区溢出是指当计算机向缓冲区内填充数据位数时超过了缓冲区本身的容量溢出的数据覆盖在合法数据上。

由于缓冲区溢出,相邻的内存地址空间被覆盖,造成软件出错或崩溃。

如果没有采取限制措施,可以使用精心设计的输入数据使缓冲区溢出,从而导致安全问题。

1.2.2 缓冲区溢出预防静态保护:不执行代码,通过静态分析来发现代码中可能存在的漏洞.静态的保护技术包括编译时加入限制条件,返回地址保护,二进制改写技术,基于源码的代码审计等.动态保护:通过执行代码分析程序的特性,测试是否存在漏洞,或者是保护主机上运行的程序来防止来自外部的缓冲区溢出攻击.1.2.3 系统栈的工作原理***内存的栈区实际上指的就是系统栈。

系统栈由系统自动维护,它用于实现高级语言中函数的调用。

对于类似C语言这样的高级语言,系统栈的PUSH/POP等堆栈平衡细节是透明的。

每一个函数独占自己的栈帧空间。

当前正在运行的函数的栈帧总是在栈顶。

Win32系统提供两个特殊的寄存器用于标识位于系统栈顶端的栈帧。

(1)ESP:栈指针寄存器(extendedstackpointer),其内存放着一个指针,该指针永远指向系统栈最上面的一个栈帧的栈顶。

(2)EBP:基址指针寄存器(extendedbasepointer),其内存放着一个指针,该指针永远指向系统栈最上面的一个栈帧的底部。

在函数栈帧中,一般包含以下几类重要信息。

(1)局部变量:为函数局部变量开辟的内存空间。

(2)栈帧状态值:保存前栈帧的顶部和底部(实际上只保存前栈帧的底部,前栈帧的顶部可以通过堆栈平衡计算得到),用于在本帧被弹出后恢复出上一个栈帧。

(3)函数返回地址:保存当前函数调用前的“断点”信息,也就是函数调用前的指令位置,以便在函数返回时能够恢复到函数被调用前的代码区中继续执行指令。

函数调用大致包括以下几个步骤。

(1)参数入栈:将参数从右向左一次压入系统栈中。

(2)返回地址入栈:将当前代码区调用指令的下一跳指令地址压入栈中,供函数返回时继续执行。

(3)代码区跳转:处理器从当前代码区跳转到被调用函数的入口处。

(4)栈帧调整:保存当前栈帧的状态值,以备后面恢复本栈帧时使用(EBP入栈);将当前栈帧切换到新栈帧(将ESP值装入EBP,更新栈帧底部);给新栈帧分配空间(把ESP减去所需空间的大小,抬高栈帧);1.2.4 基于邻接变量修改的缓冲区溢出的原理略1.3 缓冲区溢出利用1.3.1 什么是shellcodeshellcode:缓冲区溢出攻击中植入进程的代码。

1.3.2 如何定位shellcode①栈帧移位与jmpesp②获取“跳板”的地址③使用“跳板”定位的exploit1.3.3 缓冲区的组织①缓冲区的组成:填充物、淹没返回地址的数据、shellcode②抬高栈顶保护shellcode③函数返回地址移位1.3.4 shellcode编码首先,所有的字符串函数都会对NULL字节进行限制。

其次,有些函数还会要求shellcode必须为可见字符的ASCII或Unicode的值。

最后,在进行网络攻击时,基于特征的系统往往会对常见的shellcode进行拦截1.4 漏洞挖掘方法1.4.1 什么是漏洞挖掘技术1.4.2 简单的fuzzing过程Fuzz的主要目的是”崩溃crash”,”中断break”,”销毁destroy”。

Fuzz技术的思想就是利用“暴力”来实现对目标程序的自动化测试,然后监视检查其最后的结果,如果符合某种情况就认为程序可能存在某种漏洞或者问题。

1.4.3 文件类型漏洞挖掘攻击者往往会在约定的数据格式进行稍许修改,观察软件在解析这种“畸形文件”时是否会发生错误,缓冲区是否会溢出等。

(1)以一个正常的文件模板作为基础,按照一定规则产生一批畸形文件。

(2)将畸形文件逐一送入软件进行解析,并监视软件是否会抛出异常。

(3)记录软件产生的错误信息,如寄存器状态、栈状态等。

(4)用日志或其他UI形式向测试人员展示异常信息,以进一步鉴定这些错误是否能被利用。

Blind fuzz:即通常所说的“盲测”,就是在随机位置插入随机的数据以生成畸形文件。

然而现代软件往往使用非常复杂的私有数据结构。

产生测试用例的策略缺少针对性,生成大量无效测试用例,难以发现复杂解析器深层逻辑的漏洞等。

Smart Fuzz:面向逻辑(测试前首先明确要测试的目标是解析文件的程序逻辑,而不是文件本身)、面向数据类型(面向数据类型测试是指能够识别不同的数据类型,并且能够针对目标数据的类型按照不同规则来生成畸形数据)、基于样本(要求在测试前构造一个能够包含几乎所有数据结构的文件来作为样本)。

1.4.4 FTP漏洞挖掘它的基本原理就是通过对FTP协议中的命令及命令参数进行脏数据替换,构造畸形的FTP命令并发送给被测试FTP服务程序。

2.1 线程/进程安全2.1.1 线程、进程机制***进程:程序在计算机上的一次执行活动。

运行一个程序,相当于启动了一个进程。

进程是操作系统进行资源分配的单位,通俗地讲,是一个正在执行的程序。

进程的安全主要体现在线程安全,同时涉及进程的应用级别、其对系统的威胁性等。

线程:进程中的一个实体,是被系统独立调度和分派的基本单位,它可与同属一个进程的其它线程共享进程所拥有的全部资源。

一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。

线程的安全性主要来源于其运行的并发性和对资源的共享性。

线程有创建、可运行、运行中、阻塞、死亡五种状态。

2.1.2 线程同步安全所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回,同时其它线程也不能调用这个方法。

2.1.3 线程协作安全多个线程合作完成一件事情的几个步骤,此时线程之间实现了协作。

由于线程随时都有可能抢占CPU,可能在前面一个步骤没有完成时,后面的步骤线程就已经运行,该安全隐患造成系统得不到正确结果。

解决:在运行一个线程时,命令其他线程等待该线程运行完毕,才能抢占CPU进行运行。

2.1.4 线程死锁问题***死锁:是指两个或两个以上的线程在执行过程中,因争夺资源而造成的一种互相等待的现象。

条件:互斥、请求等待、不抢占、循环等待解决:可以撤消陷于死锁的全部线程。

可以逐个撤消陷于死锁的进程,直到死锁不存在。

从陷于死锁的线程中逐个强迫放弃所占用的资源,直至死锁消失。

2.1.5 线程控制安全线程控制主要是对线程生命周期的一些操作,如暂停、继续、消亡等。

线程生命周期中的安全问题主要体现在:线程暂停或者终止时,可能对某些资源的锁并没有释放,它所保持的任何资源都会保持锁定状态;线程暂停之后,我们无法预计它什么时候会继续(一般和用户操作有关),如果对某个资源的锁长期被保持,其他线程在任何时候都无法再次访问该资源,极有可能造成死锁。

解决:1:当需要暂停时,干脆让线程的run()方法结束运行以释放资源(实际上就是让该线程永久结束);继续时,新开辟一个线程继续工作。

怎样让run()方法结束呢?一般可用一个标志告诉线程什么时候通过退出自己的run()方法来中止自己的执行。

2:将线程暂停或继续,不使用suspend()和resume(),可在Thread类中置入一个标志,指出线程应该活动还是挂起。

若标志指出线程应该挂起,便用wait()命其进入等待状态。

若标志指出线程应当恢复,则用一个notify()重新启动线程。

3:不推荐使用stop()来终止阻塞的线程,而应换用由Thread提供的interrupt()方法,以便中止并退出堵塞的代码2.1.6 隐蔽信道问题、客体重用问题2.2 输入输出安全2.2.1 典型的输入安全问题及预防***①数字输入安全:确定数字格式、负数验证、判断数值溢出②字符串输入安全:正则表达式、明确匹配数据的开始和结束、在输入中拒绝特殊字符③环境变量输入安全:环境变量在同一个交互环境下只有一个实例。

不同的交互环境有不同的实例,互不干扰。

其功能是用于影响该环境下进程的行为。

环境变量的内容、存储格式给攻击者以机会。

解决:限制环境变量的使用权限、可适当破坏环境变量在shell之间的共享、用户定义的环境变量,需要进行严格的检查。

④文件名安全:不让用户自己来输入文件名、限制文件名字符种类、不允许命名可能和物理设备冲突的文件名。

2.2.2 数据库输入安全①恶意输入:攻击者通过对数据库的恶意输入,可以将信息注入正在运行的流程,获取敏感数据,甚至危害进程的运行状态。

攻击者通过这种技术,可以完成以下攻击活动:改变一条SQL语句的具体条件、添加并且运行额外的SQL的语句、秘密调用函数和存储过程。

②账户和口令:解决问题的方法主要有:不到万不得已,不使用管理员账户;使用最小特权账户,不给以额外的权限;不允许使用空口令连接数据库,防止管理员疏忽而创建了空口令;数据库连接字符串存放在配置文件中,最好可以加密,而不是代码中以明文显示;发生错误时,仅给客户端通知信息,不给具体原因,防止攻击者利用这些通知信息进行数据库猜测。

2.2.3 什么是国际化安全国际化的主要目的,是调整软件,使之能适用于不同的语言及地区。

三个部分:资源文件、读取工具、应用程序。

目标程序所支持的字符集和源数据属于的字符集可能不一致。

此种情况下,可能造成系统显示出错。

1:当目标程序所支持的字符集和源数据属于的字符集完全不兼容时,数据无法显示(或者以乱码形式显示)。

2: 当目标程序所支持的字符集是源数据属于的字符集的子集时,信息会部分丢失。

相关文档
最新文档