Простой пример: если в вашем локальном пространстве имен веб-приложения есть некий волшебный, чрезвычайно важный ключ шифрования enc_key
, и вы будете использовать строку, указанную пользователем, следующим образом:
a_var_that_gets_display = user_supplied_string % locals()
ЧемЗлоумышленник может передать что-то вроде Encryption key is %(enc_key)s
как user_supplied_string
и получить ваш ключ.
Я признаю, что это крайне маловероятный и сложный пример.Обычно использование locals()
- это сохранение, если вы не используете предоставленные пользователем данные в качестве строки формата.