编程安全深度剖析:缓冲区溢出、PHP 安全及用户输入处理
1. 缓冲区溢出问题
缓冲区溢出是用户输入影响程序执行和性能的典型示例。在编写 C 程序时,务必使用能进行缓冲区边界检查的例程,否则攻击者可能会溢出缓冲区,导致程序出错,甚至执行恶意代码。
1.1 gets() 函数示例
gets() 函数可从标准输入读取一行用户输入,但它不进行缓冲区溢出检查。以下是一个使用 gets() 的示例代码:
/* gets_exa,ple.c – Why not to use gets() */
#include <stdio.h>
void main() {
char username[20];
printf("Please enter your username: ");
gets(username);
printf("%s\n", username);
}
当用户输入不超过 20 个字符时,程序能正常运行;但当输入过长时,程序会崩溃,如:
linux6$ gets_example
Please enter your username: anonymousaaaaaaaaaaaaaaaa55555555555555555555555
➥55555555555555555
anonymousaaaaaaaaaaaaaaaa5555555555555555555555555555555555555555
Bus error (core dumped)
linux6$
超级会员免费看
订阅专栏 解锁全文
72

被折叠的 条评论
为什么被折叠?



