格式字符串漏洞以及使用 C 中示例的预防


格式字符串 − 它是一种用于格式化字符串的 ASCII 字符串。它是一个由文本和格式化参数组成的 ASCII 字符串。

在 C 中,有多种格式字符串用于格式化程序的输出。

格式字符串漏洞

这些缺陷是由编程人员可能轻松犯下的编程中的错误引起的。如果将任何此类容易出错的代码博客传递给像printf、sprintf等输出函数,那么将对目标内存地址执行写操作。

示例

#include<stdio.h>
#include<string.h>

int main(){

   char buffer[100];
   strncpy(buffer, "Hii ", 5);
   printf(buffer);

   return 0;
}

预防

可以采取一些措施来防止格式字符串漏洞

  • 尝试将格式字符串用作程序的一部分,而不是输入数据。可以使用“%s”字符串格式轻松解决这些问题。

  • 使用常量来创建格式字符串,并提取所有的变量字符串作为函数调用的参数,而不是将它们用在常量字符串中。

  • 对于无法遵循常量和变量字符串初始化规范的情况,使用格式保护。

更新于: 2022-02-01

737 次浏览

开启你的 职业生涯

完成课程即可获得认证

立即开始
广告
© . All rights reserved.