0x9*_*x90 4 c c++ xcode string-formatting
fprintf(pFile,msg.c_str());
Run Code Online (Sandbox Code Playgroud)
为什么我在Xcode中收到警告:
Format string is not a string literal (potentially insecure)
Run Code Online (Sandbox Code Playgroud)
我假设我得到这个警告,以防止攻击是msg包含一些事情,如%s堆栈到屏幕流,直到它终止为null.fprintf在这种情况下有没有安全的使用方法?
Dan*_*her 13
你可以给一个格式字符串,
fprintf(pFile, "%s", msg.c_str());
Run Code Online (Sandbox Code Playgroud)
或使用fputs,
fputs(msg.c_str(), pFile);
Run Code Online (Sandbox Code Playgroud)
tim*_*mos 10
您的编译器警告您的原因是您打印字符串的方式可能导致称为"格式字符串漏洞利用"的漏洞,如果用户能够以某种方式影响msg的内容到他可以放入他自己的格式说明符的扩展("%n"等).建议的答案(fprintf(pFile,"%s",msg.c_str());)解决了这个问题,因为格式字符串现在是常量.
您可以在此处阅读有关格式字符串漏洞的更多信息:http://julianor.tripod.com/bc/formatstring-1.2.pdf
| 归档时间: |
|
| 查看次数: |
2371 次 |
| 最近记录: |