格式字符串漏洞以及使用 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”字符串格式轻松解决这些问题。
使用常量来创建格式字符串,并提取所有的变量字符串作为函数调用的参数,而不是将它们用在常量字符串中。
对于无法遵循常量和变量字符串初始化规范的情况,使用格式保护。
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP