Всем известно, что pickle не является безопасным способом хранения пользовательских данных. Об этом даже написано на коробке.
Я ищу примеры строк или структур данных, которые нарушают синтаксический анализ в текущих поддерживаемых версиях cPython> = 2.4
. Есть вещи, которые можно мариновать, но нельзя не мариновать? Есть ли проблемы с отдельными символами Юникода? Действительно большие структуры данных? Очевидно, что у старого протокола ASCII есть некоторые проблемы, но как насчет самой последней двоичной формы?
Мне особенно любопытно, каким образом операция pickle загружает
может завершиться неудачно, особенно когда дана строка, созданная с помощью засолить сам. Существуют ли обстоятельства, при которых pickle продолжит синтаксический анализ после .
?
Какие существуют крайние случаи?
Редактировать: Вот несколько примеров того, что я ' m ищет:
__ setitem __
до того, как переменные экземпляра будут установлены с помощью __ setstate __
. Это может быть проблемой при мариновании объектов Cookie. См. http://bugs.python.org/issue964868 и http://bugs.python.org/issue826897 STOP
маркер фактически не прекращает синтаксический анализ - когда маркер существует как часть литерала или, в более общем смысле, когда ему не предшествует новая строка.