将用户输入直接传递给 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}"

最新更新