3 ms·
f-strings are not eval. It's not dynamic. It's simply an expression that is ran just like every other expression.
by rowanG077 2y ago
f-strings are not eval. It's not dynamic. It's simply an expression that is ran just like every other expression.
- bcoates 2y agoRight, and then if you do literally anything with the output other than print() to a tty, it’s an escaping/injection attack. any_func(f"{attacker_provided}") <=> eval(attacker_provided), from a security/correctness perspective
- saagarjha 2y agoHow is this any different from any_func(attacker_provided)
- rowanG077 2y agoShooting any unsanitized input into your application is bad. template strings don't make this worse. any_func(attacker_provided) is even worse then any_func(t"{attacker_provided}") since in the later case you actually have reduced the attack surface to just strings.