将用户输入直接传递给 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}"
我有一个可以收集任意字符串的表单输入。我想将该输入直接传递给 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}"