gpt4 book ai didi

C - 为什么这个程序不安全?

转载 作者:行者123 更新时间:2023-12-04 00:00:46 25 4
gpt4 key购买 nike

我有作业要分析这个 C 程序并回答三个问题。这是程序:

int main()
{
// Define buffers to store username and password
char username[16];
char password[16];
// Read username and password from user input
printf("Enter your name: ");
scanf("%s", username);
printf("Enter your password: ");
scanf("%s", password);
printf("[SHOUTING OUT LOUD] Hello, %s!\n", username);
return 0;
}

这些是问题:

  1. 有一个安全漏洞可以打印密码。这怎么可能?
  2. 如何实现程序崩溃?
  3. 更正程序,使安全漏洞不再存在。

我认为问题在于scanf方法,因为可以扫描的字符数量不受限制。所以我认为通过输入一个长字符串可能会出现段错误,因为您希望将字符保存在内存中,而这些字符不能被用户引用。这将是我对 2 的答案。对 3 的答案是可以通过限制可以扫描的字符数来纠正程序。但我似乎没有找到 1 的答案。你能帮我解决这个问题吗?

最佳答案

想象一下,如果实现将用户名和密码连续存储在内存中。打印语句在输出密码之前停止是至关重要的。但只有在用户名字段中遇到零字节时才会这样做。如果用户名太长,则用户名字段中不会有零字节,因此打印可以继续输出密码字段的内容。

关于C - 为什么这个程序不安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62288933/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com