Загружаем изображение…

Хотите превратить строку в объект без риска выполнить произвольный код?



Python даёт встроенный парсер литералов — ast.literal_eval().

Попробуйте:
import ast

safe = ast.literal_eval("{'a': 1, 'b': [2, 3]}")
print(safe)


Работает со списками, словарями, числами, строками и вложенными структурами, но никогда не выполняет код.

Например, строка:
ast.literal_eval("__import__('os').system('rm -rf /')")

Поднимет ValueError/SyntaxError — код не выполнится.

Можно безопасно парсить строковые данные из конфигов, входных параметров, CLI, API, логов:
params = ast.literal_eval("[10, 20, 30]")

Пригодится, когда нужно принимать данные, но не хочешь словить RCE или неожиданный код в eval().

Python Ready | #совет
Просмотры: 181
Открыть в MAX Сообщить о неточности

Репосты публикации

Публикация канала

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти