【发布时间】:2011-04-09 10:33:13
【问题描述】:
OWASP 说:
"strcpy等C库函数 ()、strcat()、sprintf() 和 vsprintf () 对以空字符结尾的字符串进行操作 并且不执行边界检查。”
sprintf 将格式化数据写入字符串 int sprintf ( char * str, const char * 格式, ... );
例子:
sprintf(str, "%s", message); // assume declaration and
// initialization of variables
如果我理解 OWASP 的评论,那么使用 sprintf 的危险在于
1) 如果message的长度> str的长度,则存在缓冲区溢出
和
2) 如果 message 不以 \0 为空终止,则 message 可能会被复制到 str 的内存地址之外消息,导致缓冲区溢出
请确认/拒绝。谢谢
【问题讨论】:
-
另外,
sprintf(str, message)或类似的程序员错误是真正的风险。