一、填空题
1. 软件安全中,软件安全测试和开发过程包括:软件安全( )、软件安全( )、软件安全( )、软件安全( )、软件安全( )。
- 我的答案:
- (1) 需求分析
- (2) 设计
- (3) 编码
- (4) 测试
- (5) 部署
2. 网络空间包含电子设备、基础设施、应用、数据,还有( )。
- 我的答案:
- (1) 人
3. 网络安全框架的核心PDRR模型中,P指( )、D指( )。
- 我的答案:
- (1) Protection
- (2) Detection
4. Win32系统中,进程空间按功能分为4个区域,从低地址到高地址依次为()、()、()、()。
- 我的答案:
- (1) 栈区
- (2) 堆区
- (3) 代码区
- (4) 数据区
5. 栈增长方向是从()地址到()地址;堆增长方向是从()地址到()地址。
- 我的答案:
- (1) 高
- (2) 低
- (3) 低
- (4) 高
6. 数据区存储()变量和()变量。
- 我的答案:
- (1) 全局
- (2) 静态
7. 缓冲区溢出指向缓冲区写数据时,没有做()检查,缓冲区的数据超过预先分配的(),使得一簇数据覆盖在合法数据上引起的系统异常。
- 我的答案:
- (1) 边界
- (2) 边界
8. 下列程序的的运行结果是(),如果不相等,第二空填写修改后的判断语句(不敲空格,不敲结束的分号),如果相等,第二空填无。
char *s1="abcd";
char s2[5];
strcpy(s2,s1);
if(s1==s2){
printf("equal!");
}
else{
printf("not equal!");
}
- 我的答案:
- (1) not equal!
- (2) if(strcmp(s1,s2)==0)
9. 补充for循环,实现任意元素数组的遍历打印,填写完整的for()语句,不加任何空格。
int a[]={..............};
for(int i=0; )
{
System.out.println(a[i]);
}
- 我的答案:
- (1) for(int i = 0; i < a.length; i++)
10. 定义数组,使用下列语句对吗?对则回答对,不对则修改该语句,语句中不加空格。
int *a=new int(10);
- 我的答案:
- (1) int*a=newint[10]
11. 下列语句,根据注释填空,不敲空格。
Obj * obj=new Obj[10];
delete //释放
OObj * obj=new Obj(10);
delete //释放
- 我的答案:
- (1) []obj
- (2) obj
12. 下列程序有无漏洞,无则填无,有则把该代码行拷贝到答案中。
void foo(const char *s){
}
void main(int a, char *v[]){
static char buf[10];
static void(*p)(const char * s);
p=&foo;
strncpy(buf,v[1],strlen(v[1]));
(void )(*p)(v[2]);
}
- 我的答案:
- (1) strncpy(buf,v[1],strlen(v[1]));
13. 下列代码有错吗,无则填无,有则把错误行修改填入空中。
class Foo{
private:
int id;
char * name;
public:
Foo(int i){
id=i;
name=new char [20];
}
~Foo()(
delete []name;
}
};
void delete_object(void * p){
delete p;
}
int main(){
Foo * f=new Foo(100);
delete_object(f);
}
- 我的答案:
- (1) delete f;
14. 下列程序打印出的结果分别是什么?
unsigned short int a =32768;
short int i=a;
printf("%d",i);
a=65535;
i= a;
printf("%d",i);
- 我的答案:
- (1) -32768
- (2) -1
15. 下列程序打印的结果是什么?
int bigint=2147483647;
printf("%d",bigint++);
unsigned int z=0;
printf("%d",--z);
- 我的答案:
- (1) 2147483647
- (2) -1
16. 程序的打印结果是什么?
unsigned int i=ULONG_MAX;
int c= -1;
printf("%d", c==i);
- 我的答案:
- (1) 1
17. 下列程序的打印结果是什么?如何修改(只改一句)?
unsigned short s=4;
while (--s >=0)
{
printf("%d",s);
}
- 我的答案:
- (1) 无限循环
- (2) while(--s>0)
18. 在32位系统中,size_t相当于类型 ?最大值是 ?
- 我的答案:
- (1) unsigned int
- (2) 4294967295
19. 下列代码有漏洞吗?把有漏洞的行进行改正,每一句改正的代码填一个空。
char s1[5];
char s2[5];
char s3[10];
strcpy(s1,"12345");
strcpy(s2,"abcde");
strcpy(s3,s1);
strcat(s3,s2);
cout<<s1<<endl;
cout<<s2<<endl;
cout<<s3<<endl;
- 我的答案:
- (1) char s1[6]
- (2) char s2[6]
- (3) char s3[11]
20. 下列代码段有漏洞,把有漏洞的行进行改正,每一句改正的代码填一个空。
char s[10];
puts("input a string:") ;
gets(s);
cout<<s<<endl;
- 我的答案:
- (1) fgets(s,sizeof(s),stdin);
21. 下列程序有漏洞吗?第几行的程序有漏洞,问题在哪里?(把有漏洞的语句粘贴在答案里)
void test(char *c)
{
short s=strlen(c);
char buf[100];
cout << "strlen(c)=" << strlen(c)<<endl;
if(s<100){
strcpy(buf,c);
}
else{
cout<<"overflow!" <<endl;
}
}
- 我的答案:
- (1) short s=strlen(c)
22. 整数n的初值为10,写出下列语句n的值是多少?
n=(2* ++n)*(n = 'a')+ (n>0?1:-1);
- 我的答案:
- (1) 2135
二、单选题
1. 下列程序是否存在内存泄露?
int **a =new int *[3];
for (int i=0;i<3;i++){
a[i]=new int[2];
}
delete []a;
- A. 不存在
- B. 存在
我的答案: B
三、讨论
1.C语言为什么容易产生栈溢出漏洞?我们在编程中怎么防止栈溢出漏洞?
1.栈溢出是由于C语言系列没有内置检查机制来确保复制到缓冲区的数据不得大于缓冲区的大小,因此当这个数据足够大的时候,将会溢出缓冲区的范围。
2.为了防止栈溢出攻击,最直接和最根本的办法当然是写出严谨的代码,剔除任何可能发生栈溢出的代码。但是当程序的规模大到一定的程序时,代码错误很难被发现,因此操作系统和编译器采取了一些措施来防护栈溢出攻击,主要有以下措施。
①栈不可执行机制:操作系统可以利用cpu硬件的特性,将栈设置为不可执行的
②栈保护机制:检查查栈上的数值有没有被改写,若被改写了,则中止程序运行。
③内存布局随机化机制:用户程序都是加载到固定位置运行。
2.人脸识别有哪些安全性问题?
1.人脸识别技术滥用无度,人脸特征随意采集。公民的隐私受到极
大威胁,在使用人脸识别技术之前,信息采集者和持有者并未有效评
估了人脸识别应用的必要性。
2.人脸识别技术中对用人脸特征数据的保密性、完整性和可用
性维护值得怀疑
保密性、完整性和可用性被称为信息安全的 CIA 三要素。App 违
法违规收集使用个人信息专项治理工作组在 2020 年 9 月曾曝光某些
APP 使用明文传输人脸图片数据;“深网视界”被曝出人脸识别数据
库,可供任何人查找,并允许完全访问,上述两个案例严重违背了保
密性原则;目前几乎所有的 APP 在用户注销 APP 账号之后,APP 未
提供用户删除人脸信息的渠道,此项违背了数据可用性原则。
3.人脸识别技术的安全技术标准和使用规范滞后于技术的发展
规制在人脸数据采集、使用与销毁等方面的缺位,让人脸识别技
术看起来很高大上,但实际上危险性极大。虽然《中华人民共和国网
络安全法》明确将个人生物特征纳入个人信息保护范围,但个人信息
的使用、存储、运输、管理相关的法律条例仍需进一步细化,目前手
机 APP 未在明确告知用户的情况下就对用户的人脸数据进行收集的
现象比比皆是,甚至还出现移动 APP 存在强制收集用户的人脸信息,
否则 APP 无法正常使用的情况;
4.地下黑色产业链导致用户数据被非法贩卖
黑客或者内部员工将非法获得的人脸身份数据贩卖给人脸识别
资源商,资源商将身份信息贩卖给无法或不想用自己信息完成人脸识
别认证的客户,以帮助其通过人脸识别实名认证,进而牟取巨额暴利。
大威胁,在使用人脸识别技术之前,信息采集者和持有者并未有效评
估了人脸识别应用的必要性。
2.人脸识别技术中对用人脸特征数据的保密性、完整性和可用
性维护值得怀疑
保密性、完整性和可用性被称为信息安全的 CIA 三要素。App 违
法违规收集使用个人信息专项治理工作组在 2020 年 9 月曾曝光某些
APP 使用明文传输人脸图片数据;“深网视界”被曝出人脸识别数据
库,可供任何人查找,并允许完全访问,上述两个案例严重违背了保
密性原则;目前几乎所有的 APP 在用户注销 APP 账号之后,APP 未
提供用户删除人脸信息的渠道,此项违背了数据可用性原则。
3.人脸识别技术的安全技术标准和使用规范滞后于技术的发展
规制在人脸数据采集、使用与销毁等方面的缺位,让人脸识别技
术看起来很高大上,但实际上危险性极大。虽然《中华人民共和国网
络安全法》明确将个人生物特征纳入个人信息保护范围,但个人信息
的使用、存储、运输、管理相关的法律条例仍需进一步细化,目前手
机 APP 未在明确告知用户的情况下就对用户的人脸数据进行收集的
现象比比皆是,甚至还出现移动 APP 存在强制收集用户的人脸信息,
否则 APP 无法正常使用的情况;
4.地下黑色产业链导致用户数据被非法贩卖
黑客或者内部员工将非法获得的人脸身份数据贩卖给人脸识别
资源商,资源商将身份信息贩卖给无法或不想用自己信息完成人脸识
别认证的客户,以帮助其通过人脸识别实名认证,进而牟取巨额暴利。
3.Web系统对安全有很高的要求,例如登录口令应该具有强口令的设计,你认为应该从哪些方面设计强口令?请列举出你能想到的所有设计点。
1.口令长度大于等于14位且包含数字、大小写字母及特殊字符;
2.不使用个人信息;
3.不对每个帐户使用相同的密码;
4.避免使用字典中可以找到的单词;
5.使用密码生成器生成随机密码。
本文摘自 :https://www.cnblogs.com/