刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

某验证用户登陆的程序代码片段如下。

……

void work ()

{

printf("start a internal process!\n");

}


Int main ()

{

char passwd[16]; char Userid[16];

printf("Please input your ID :"); 

gets(Userid);

printf("Please input your password:"); 

gets(passwd);


if (!strcmp(Userid, "Admin") &&~strcmp(passwd,"initpass")) 

printf("Welcome Admin! \n");

}

关于某验证用户登录的程序代码的安全性问题分析。

使用微信搜索喵呜刷题,轻松应对考试!

答案:

检查gets 、strcmp等语句中,对输入数组数据的长度进行检查或者限制。

解析:

上述代码中存在的安全威胁是缓冲区溢出。由于没有对输入的变量进行长度检测,没有判断数组越界的情况,使用gets()函数获取用户输入时,如果输入的数据超过数组Userid和passwd的长度,就会导致缓冲区溢出,从而引发安全问题。

为了修补这个安全漏洞,需要对输入数组数据的长度进行检查或者限制。可以在使用gets()函数之前,先获取用户输入的长度,然后判断长度是否超过数组的长度。如果超过了,可以提示用户重新输入或者截断过长的输入。另外,建议使用更安全的函数替代gets(),比如fgets(),它可以限制输入的长度,避免缓冲区溢出的问题。同时,对于密码的验证,不应该在代码中硬编码密码,应该使用更安全的方式存储和验证密码。

创作类型:
原创

本文链接:关于某验证用户登录的程序代码的安全性问题分析。

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share