【发布时间】:2011-03-19 00:16:41
【问题描述】:
我收到警告说 tmpnam 很危险,但我更喜欢使用它,因为它可以在 Windows 和 Linux 中按原样使用。我想知道为什么它会被认为是危险的(我猜这是因为可能被滥用,而不是它实际上无法正常工作)。
【问题讨论】:
-
您能添加一些上下文吗?谁声称它很危险?
-
tmpname完全是变量名、文件名、源文件名还是别的什么?并非所有人都有通灵能力。 -
@sbi:
tmpnam是标准 C 库函数。 -
@Nathon 我实际上是在谈论 gcc 和 msvc,我只是想知道说它很危险的理由是什么。 @sbi 我想我应该提到它是一个标准库函数。
-
如果黑客有你的代码。他可以在您的代码调用 tmpnam() 之后但在您打开文件之前附加一个调试器并暂停程序。然后攻击者将修改文件系统,以便他可以访问该文件,然后让您的代码继续执行。攻击者现在可以完全访问您的 tmp 数据。或者,如果您使用 tmpfile(),则不会在代码中打开此漏洞,因为攻击者很难在代码位于操作系统的特权部分时停止代码。
标签: c++ temporary-files