太原理工大学软件安全期末真题

发布于:2024-06-21 ⋅ 阅读:(139) ⋅ 点赞:(0)

 

一、选择题

1-5:BDADC 6-10:DCDBA

11-15:DCCCC 16-20:BBCCB

二、名词解释

1、零日漏洞是指未被公开披露的软件漏洞,还没给软件的作者或厂商以时间去为漏洞打补丁或给出解决方案建议,因此,攻击者可以利用这种漏洞破坏计算机程序、数据、设备。

2、在计算机科学中,地址空间配置随机加载(英语: Address spacelayout randomization,缩写ASLR,又称地址空间配置随机化、地址空间布局随机化)是一种防范内存损坏漏洞被利用的计算机安全技术。

3、静态分析指在程序不运行的情况下对程序代码进行分析。动态分析指在程序运行的情况下对程序进行分析。

4、“栈帧”是用于支持虚拟机进行方法调用和执行的数据结构,每一个方法从调用开始到执行结束,都对应着一个栈帧在虚拟机栈里面从入栈到出栈的过程,栈帧也是虚拟机运行时数据区中虚拟机栈的栈元素。

三、简答题

1、简述SQL注入漏洞的原理?SQL注入漏洞如何判断是数字型还是字符型?

SQL注入攻击的原理是利用Web应用程序对用户输入数据的合法性没有校验或过滤不严,攻击者可以在web应用程序查询语句末尾加上恶意语句从而获取用户信息。通过输入特殊字符和数字,观察系统响应来判断,常用1’OR’1’=’1和1’AND’1’=’2进行判断。

2、一个函数栈帧中主要包含哪些信息?

栈帧通常包含以下信息:

返回地址:函数执行完毕后,控制权返回到调用者的地方的地址。

局部变量:函数内部定义的局部变量,它们只在函数的作用域内可见。

参数:传递给函数的参数值。

寄存器保存:在某些情况下,函数调用可能会保存一些寄存器的值,以确保它们在函数执行期间不会被覆盖。

栈指针:指向当前栈帧的指针。

3、软件安全开发生命周期思想(SDL)是什么?

SDL的核心理念就是将安全考虑集成在软件开发的每一个阶段:安全培训、安全需求分析、安全设计、安全实施、安全验证、安全发布、安全响应。

4、列举出5条安全设计原则,并简要说明其含义。

(1)减少软件受攻击面原则:软件受攻击是指,用户或其他程序及潜在的攻击者都能够访问到所有的功能和代码的总和。一个软件的攻击面越大,安全风险就越大。减少软件受攻击面就是去除、禁止一切不需要使用的模块、协议和服务,其目的是减少攻击可以利用的漏洞;

(2)最小授权原则:最小授权指系统仅授予实体完成规定的任务所必须的最小权限,并且改权限的持续时间也尽可能短;

(3)权限分离原则:将软件功能设计为需要在两个或更多条件下才能实现,以防止一旦出现问题,整个软件都可能面临风险;

(4)纵深防御原则:在软件设计中加入层次化安全控制和风险缓解/防御方法,它强调不依赖于单一的安全解决方案,使用多种互补的安全功能,即使一个安全功能失效,也不会导致整个系统遭受攻击;

(5)完全控制原则:要求每一次访问受保护对象的行为都应可能进行细粒度检查;

(6)默认安全配置原则:为系统提供默认的安全措施,包括默认权限、默认策略等,尽可能让用户不需要额外配置就可以安全地应用;

(7)开放原则:软件设计本身应该是开放的,安全防御机制的实现应该不依赖于设计本身。通过模糊和晦涩难懂的方法固然可以给攻击者增加一些难度,或者说某种程度上提供了纵深防御的能力,但不应该是唯一的或主要的安全机制;

(8)最弱保护一环原则“保护软件系统中的最弱组件。该原则类似于“木桶原理”;

(9)最少共用机制原则:尽量减少依赖于一个以上用户甚至于所有用户的通用机制。设计应该根据用户角色来划分功能或隔离代码,因为这可以限制软件的暴露概率,提高安全性;

(10)安全机制的经济性原则:以较低的开发成本和资源消耗获得具有较高安全质量的软件产品和系统保障;

(11)安全机制心理可接受原则:安全保护机制设计得要简单,要让用户易用,要确保用户对资源的可访问,以及安全机制对用户透明,用户才会使用这些保护机制;

(12)平衡安全设计原则:以上介绍的这些安全设计原则每一项都有自己的侧重点,将所有这些安全原则都设计到软件中是不可能的,因此有必要在这些安全原则间进行决策折中,即平衡安全设计原则。

四、分析和论述题

1、

(1)sql参数暴露,可能会产生sql注入攻击 (2) sql注入攻击的防范措施有:1、对用户进行分级管理,严格控制用户的权限;2、在书写SQL语言时,禁止将变量直接写入到SQL语句,必须通过设置相应的参数来传递相关的变量;3、在具体检查输入或提交的变量时,对于单引号、双引号、冒号等字符进行转换或者过滤;4、使用安全参数;5、通过专业的扫描工具,可以及时的扫描到系统存在的相应漏洞;6、多层验证;7、数据库信息加密。

2、(1)电子邮件相关的安全保密威胁可概括为四类:电子邮件被截获、电子邮箱被非法登录控制、电子邮件系统被攻击控制、针对特定用户的电子邮件社会工程学攻击

(2) Cookie + Session登录如果服务器端是一个集群,为了同步登录态,需要将Sessionld同步到每一台机器上,无形中增加了服务器端维护成本。 由于Sessionld存放在Cookie中,所以无法避免CSRF攻击。

(3)Token登录 Token方案对后端压力小,适合大型分布式的后端架构,

(4)SSO单点登录 SSO单点登录,适用于中大型企业,想要统一内部所有产品的登录方式。

(5)OAuth 第三方登录 OAuth 第三方登录,简单易用,对用户和开发者都友好

3、

(1)代码中输入明文密码,如果被其他参数传递出去,造成密码泄露

(2)明文密码传输指当我们在网站上输入账号与密码并单击登录时,用Burp Suite截取登录数据包。有时候会发现输入的登录密码在传输的时候采用的是明文密码传输,并未进行任何加密或者采用的是类似Base64等弱编码方式(轻轻松松即可破解,相当于未加密)。若使用HTTPS加密传输,则可以解决这个问题。

(3)输入:可以安装键盘HOOK或驱动来获取.到密码框,虽然是显示的是*号.但一样是明文。

(4)读取输入的密码后,没有清除用于保存密码内容的缓存.虽然你对密码进行了加密,但缓存的内容仍然是未加密的。

(5)对可逆密码,会有一个解密的过程,解密后密码就是明文了.这时候也同样不安全。

4、

漏洞分析实验、SQL注入实验、登录页面需求分析、编写正则表达式

安全的代码不一定是高质量的代码,高质量的代码也不一定是安全的代码。 传统的保证质量的软件开发方法、过程和工具,并不能实现软件的安全性。软件的安全性需要通过专门的方法、过程和工具和保证。当然并不是它们之间没任何关系,有很多方面是可相互借鉴和互通的。软件质量和软件安全的判定标准也是不同的,衡量软件质量的标准主要体现在易用性、可重用性和可维护性。而衡量软件安全的标准是机密性、完整性和可用性。


网站公告

今日签到

点亮在社区的每一天
去签到