【发布时间】:2013-01-21 10:37:32
【问题描述】:
您好,我是 C 的新手,简而言之,作为课堂作业的一部分,我做了以下工作:
foo (char *var) {
printf(var);
}
我被告知这是不好的做法且不安全,但我的导师并没有得到太多详细的信息。我假设如果 var 的字符串值可以由用户控制,它可以用来执行缓冲区溢出吗?我将如何正确强化此代码?我必须限制 str 长度吗?
干杯,谢谢!
【问题讨论】:
-
是的,限制字符串长度以避免可能的无效内存访问。还有一个空指针检查...
-
printf的第一个参数是格式字符串。让调用者指定它是灾难的根源。考虑一下如果用户传入"%s"会发生什么 -
看看dwheeler.com/secure-programs(关于安全编程的详细HOWTO)
标签: c string security variables printf