‘printf("%s", user_input)’危险吗?

问题描述 投票:0回答:1

我知道

printf(user_input)
很危险,但是
printf("%s", user_input)
呢?只要
user_input
终止于 NUL,这通常是安全的吗?

c security user-input
1个回答
0
投票

我知道

printf(user_input)
很危险,但是
printf("%s", user_input)
呢?这通常安全吗?

后者是通常推荐的前者的替代品之一。它解决了导致

printf(user_input)
特别危险的问题。

仍然存在更普遍的问题,例如如果

user_input
不是指向以空结尾的字符串的指针,或者该字符串包含从输出设备引发特殊行为的字符,或者标准输出流已关闭,会发生什么情况,或者也许是其他东西。

我不确定“通常安全”是否能很好地描述这一切,但也许这确实是您的意思。

© www.soinside.com 2019 - 2024. All rights reserved.