21xrx.com
2024-06-03 06:21:28 Monday
登录
文章检索 我的文章 写文章
c语言中的gets函数被跳过 你需要知道的一切
2023-06-15 14:14:25 深夜i     --     --
- C编程语言 - gets函数 - 缓冲区溢出 - 安全性 - fgets函数 - 代码安全

文章:

自从2010年发布了C编程语言的ISO/IEC 9899:2011标准中,对于gets函数的使用,已经被标记为危险的因素。然而,很多C语言的开发者仍然会使用这个函数。从那以后,为了提高安全性,它已经被标记为过时的函数。

然而,一些奇怪的现象发生了。近来,有些C程序员发现他们用gets函数时,与以前的版本有不同。让我们来了解一下。

gets函数的入门使用

这个函数为开发者提供了一个简单、轻松的方法来在屏幕上读取字符串,而无需输入字符串的长度。让我们看一个例子:


 #include &ltstdio.h>

 int main () 

 { 

   char name[50]; 

   printf("输入您的名称: \n"); 

   gets(name); 

   printf("您的名称是: %s", name); 

   return 0; 

 } 

这里的gets()函数从用户的输入中读取字符串,并在屏幕上显示出来。但是,如果用户输入的长度大于50个字符,用户将无法得到正确的结果!

gets函数安全漏洞及攻击方式

因为gets不对输入字符串的长度进行验证,它容易受到缓冲区溢出攻击。这种攻击利用了C语言中缓冲区溢出的漏洞。

这种攻击最常用于“入侵”计算机系统,以便窃取敏感信息,例如用户ID和密码等等。通过缓冲区溢出漏洞,黑客可以更容易地访问受保护的系统和信息,并进行不当操作。

如何解决缓冲区溢出?

避免使用gets函数。对于读取字符串,底层库函数fgets更加安全。

使用字符数组长度加1来存储输入的字符串,以防溢出。

在编写C程序时,总是确保变量初始化,不要使用未初始化的变量。

总结

开发者们需要知道,C语言中的gets函数已经被标记为过时的函数。这意味着应该避免使用它。程序员们应该始终注意编写安全的代码,避免使用会导致安全问题或漏洞的函数。

关键词:

- C编程语言

- gets函数

- 缓冲区溢出

- 安全性

- fgets函数

- 代码安全

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复