当前位置:首页 > IT技术 > 其他 > 正文

课程练习 - 软件安全
2022-05-11 11:03:28

第一单元

1.软件是程序、()和()的集合体。

第一空: 

  文档

第二空: 

  数据

 

2.网络攻击中,超过     %的漏洞来自应用程序软件。

第一空: 

  70

 

3.移动互联网App存在安全漏洞的比例超过     %。

第一空: 

  90

 

4.软件面临的安全威胁分为三类,分别为         、       和         。

第一空: 

  软件漏洞

第二空: 

  恶意代码

第三空: 

  软件侵权

 

5.漏洞利用的过程:漏洞发现     、    、漏洞验证、漏洞利用、实施攻击。

第一空: 

  漏洞挖掘

第二空: 

  漏洞验证

 

6.软件发布后立刻被发现的漏洞称为零日漏洞.

我的答案:
  ×
 

7.下列函数的代码在C、C++语言中是否有漏洞?

long foo(int x, int y)

{

long result= x * y ;

return result;

}
  • A、

  • B、

    没有

我的答案:
  A
 

8.下列函数的代码在Java语言中是否有漏洞?

long foo(int x, int y)

{

long result= x * y ;

return result;

}
  • A、

  • B、

    没有

我的答案:
  A
 

9.下列代码的打印结果是什么?

   int i = -3;

   unsigned short ui=i;

   printf("%u",ui);
第一空: 

  65533

 

10.下列代码的结果是什么?

char c1='a';

char c2='b';

char c3=c1+ c2;

printf("%d,",c3);
第一空: 

  -61

 

11.上一题(填空第二题)如何修改能得到想要的结果?(提交答案填写修改后的完整一行语句,不要加多余空格)

第一空: 

  int c3 = c1 + c2

 

第二单元

1.软件安全错误一般包含六个方面,分别是     、       、      、     、       和       。

第一空: 
  需求说明错误
第二空: 
  设计错误
第三空: 
  编码错误
第四空: 
  测试错误
第五空: 
  配置错误
第六空: 
  文档错误
 

2.(  )是引发信息安全事件的根源。

第一空: 
  漏洞
 

3.补丁已经发布,但是用户未打补丁时的漏洞称为(    )。

第一空: 
  1 day漏洞
 

4.软件开发过程中,人为错误称为(  ),软件中,软件内部的错误称为(  ),软件运行中,不正常的状态称为(  )。

(答案选项:软件故障、软件缺陷、软件错误)

第一空: 
  软件错误
第二空: 
  软件缺陷
第三空: 
  软件故障
 

5.网络空间包含电子设备、基础设施、应用、数据,还有(  )。

第一空: 
  人
 

6.网络安全框架的核心PDRR模型中,P指(    )、D指(   )。

第一空: 
  保护
第二空: 
  检测
 

7.零日漏洞是指没有公开的漏洞。

我的答案:
  ×
 

8.软件发布后立刻被发现的漏洞称为0 day漏洞。

我的答案:
  ×
 

三、第三单元

1.栈帧是系统为进程中的每个()调用划分的一个空间。

第一空: 

  函数

 

2.指向当前栈帧的栈顶的指针是(),指向栈底的是()。

第一空: 

  ESP

第二空: 

  EBP

 

3.缓冲区溢出指向缓冲区写数据时,没有做()检查,缓冲区的数据超过预先分配的(),使得一簇数据覆盖在合法数据上引起的系统异常。

第一空: 

  边界

第二空: 

  边界

 

4.数据区存储()变量和()变量。

第一空: 

  全局

第二空: 

  静态

 

5.栈增长方向是从()地址到()地址;堆增长方向是从()地址到()地址。

第一空: 

  高

第二空: 

  低

第三空: 

  低

第四空: 

  高

 

6. Win32系统中,进程空间按功能分为4个区域,从低地址到高地址依次为()、()、()、()。

第一空: 

  栈区

第二空: 

  堆区

第三空: 

  代码区

第四空: 

  数据区

 

7.程序中所用的缓冲区可以是堆、栈、数据区。

我的答案:
  
 
 

8.代码区只存放机器代码。

我的答案:
  ×
 

9.下面的程序中,忽视了字符越界,修改第1行、第6行的代码,进行纠错。(提交答案时,删除语句中所有空格,不管语法)

1.char s1[5];

  2.char s2[]="abcde";

  3.char *p;

  4.int i;

  5.strcpy(s1,s2);

  6.p=(char *) malloc (strlen(s1));
第一空: 

  char s1[6];

第二空: 

  p=(char*)malloc(strlen(s1)+1);

 

10.下列语句,cin没有考虑输入长度,在cin语句之前加一条语句,控制cin的输入长度。

  char s[10];

  cin>>s;

  cout<<s<<endl;
第一空: 

  cin.width(10)

 

11.下列程序,是否有错(第一空填有/无),如果有错,在第二空进行修改,如果没有,第二空填无。

char * s="c language";

s[0]='C';
第一空: 

  有

第二空: 

  char s[]="c language";

 

12.在C语言的格式化输出中:

表示十进制数输出的格式符号是%d,那么

表示宽度为6,右对齐的十进制数输出的格式符号是();

表示宽度为6,左补零右对齐的十进制数输出的格式符号是();

输出16进制数的格式符号是();

输出字符串的格式符号是();

以小数形式输出浮点数的格式符号是();

输出十进制无符号数的格式符号是();

输出asc码字符的格式符号是();

以指数形式输出浮点数的格式符号是();

输出指针地址的格式符号是();

输出长整型数的格式符号是()。

 

第一空: 

  %6d

第二空: 

  %06d

第三空: 

  %x

第四空: 

  %s

第五空: 

  %f

第六空: 

  %u

第七空: 

  %c

第八空: 

  %e

第九空: 

  %p

第十空: 

  %ld

 

四、第四单元

1.软件生命周期由三个时期构成,分别是()时期、()时期和()时期。

第一空: 
  软件定义
第二空: 
  软件开发
第三空: 
  软件维护
 

2.确定软件完成总目标的是()时期,由()负责完成。

第一空: 
  软件定义
第二空: 
  系统分析员
 

3.软件定义时期,一般分为三个阶段,分别是()、()和()。

第一空: 
  问题定义
第二空: 
  可行性研究
第三空: 
  需求分析
 

4.完成设计和实现任务的是()时期,其中系统设计分为()和()阶段,系统实现分为()和()阶段。

第一空: 
  软件开发
第二空: 
  总体设计
第三空: 
  详细设计
第四空: 
  编码和单元测试
第五空: 
  综合测试
 

5.使软件能够满足用户长久需求的是()阶段。

第一空: 
  软件维护
 

五、第五单元

1.威胁建模可以在软件()之初,就帮助发现安全问题,发现风险。

  • A、

    设计

  • B、

    需求分析

  • C、

    编码

  • D、

    安全培训

我的答案:
  A
 

2.解决软件产品自身安全实质性的方法是()?

  • A、

    攻防

  • B、

    威胁建模

  • C、

    渗透测试

  • D、

    软件安全需求分析

我的答案:
  B
 

3.软件安全中,软件安全测试和开发过程包括:软件安全(  )、软件安全(  )、软件安全(  )、软件安全(  )、软件安全(  )。

第一空: 
  需求分析
第二空: 
  设计
第三空: 
  编码
第四空: 
  测试
第五空: 
  部署
 

4.威胁建模有3种,分别是以()、()和()为中心。

第一空: 
  软件
第二空: 
  安全
第三空: 
  资产和风险
 

5.测试人员使用()来生成安全测试用例。

第一空: 
  威胁模型
 

6.开发团队使用()来实现安全控制和编写安全的代码。

第一空: 
  威胁模型
 

7.威胁建模的作用可以跨越软件生命周期,一个完整的威胁建模是软件()、()、()、()和运营团队的代表性输入项。

第一空: 
  设计
第二空: 
  开发
第三空: 
  测试
第四空: 
  部署
 

8.设计阶段,由()识别威胁,建立威胁模型。

第一空: 
  软件架构团队
 
 

9.威胁建模是循环反复的过程。

我的答案:
  
 

10.软件开发阶段,会发现所有的可能威胁。

我的答案:
  ×
 

本文摘自 :https://www.cnblogs.com/