const char* abc = "foo";
printf(abc);
这安全还是合适?我看到了一些遗留代码,包括这个。 谢谢!
非常非常抱歉..我弄错了,我改回来了....
最佳答案
不,这不安全。假设 abc
指向一个有效的字符串(目前还没有),这种模式可能容易受到格式字符串漏洞的影响。引用Format string attacks
编辑:我看到您修复了问题中的代码。它曾经将 abc
作为第一个参数传递给 printf
,这真的非常糟糕。既然您提出了第一个参数 "%s"
,就好多了。这两者并不相似,并且在安全性方面存在巨大差异,因此请在您的遗留代码中寻找这种模式。
关于C++ printf 问题 : How can I safely pass a char* to printf?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4868759/