Attacking Python& #39;s pickle

Я пишу веб-приложение, которое сохраняет ввод пользователя в объекте. Этот объект будет маринован.

Может ли пользователь создать вредоносный ввод, который может сделать что-то вопиющее, когда объект распаковывается?

Вот действительно простой пример кода, который игнорирует замечательные принципы, такие как инкапсуляция, но воплощает то, что я рассматриваю:

import pickle

class X(object):
    some_attribute = None

x = X()
x.some_attribute = 'insert some user input that could possibly be bad'

p = pickle.dumps(x)

# Can bad things happen here if the object, before being picked, contained
# potentially bad data in some_attribute?
x = pickle.loads(p)
32
задан Martijn Pieters 2 May 2014 в 12:48
поделиться