将用户输入直接传递给 strftime 是否危险?

Is it dangerous to pass user input directly to strftime?

我有一个可以收集任意字符串的表单输入。我想将该输入直接传递给 strftime,以便用户可以指定自己的格式。例如:"mytext%Y" 可能是用户输入的,然后我会将其传递给 strftime。

# userinput = "mytext%Y"
mydate = DateTime.now.strftime(userinput)
# outputs "mytext2000"

这样做安全吗?如果没有,开发人员需要考虑或采取什么措施?

很安全。

最糟糕的情况是当用户输入无效格式时,它只会打印出字符串。

Date.today.strftime('%A')
# => "Tuesday"

Date.today.strftime('#{1 + 1}')
# => "\#{1 + 1}"