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

简答题

试题4:( 19分)

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

……

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等语句中,对输入数组数据的长度进行检查或者限制。

解析:

原因:代码中没有对输入的Userid和passwd的长度进行检查或限制,用户使用超过数组长度的输入时,会导致缓冲区溢出。攻击者可以利用这个漏洞,输入过长的字符串来覆盖内存中的其他数据,可能导致程序崩溃或者执行恶意代码。
解决方法:在获取用户输入之前,应该先检查输入的数组数据的长度,确保不会超过数组的长度。可以使用strlen函数来获取字符串的长度,并比较其是否超过数组的长度。如果超过了数组的长度,可以提示用户重新输入或者截断过长的部分。这样可以避免缓冲区溢出攻击。

创作类型:
原创

本文链接:某验证用户登陆的程序代码存在哪些安全威胁,并针对这些安全威胁提出修正建议。

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

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

分享考题
share