2012-12-28 1 views
0

나는 장고를 보내는 이유는 InMemoryUploadedFile 개체를 셀러리 작업의 인수로 보낼 때 pickling 할 수 없다는 것을 이해하려고 시도하고있다. Can't pickle <type 'cStringIO.StringO'>: attribute lookup cStringIO.StringO failed. 그래서 나는 File 객체를 시도했지만 잘 작동하지 않지만 StringIO이 작동합니다.python : File 객체를 절편 할 수없는 이유는 무엇입니까?

차이점을 이해하는 데 필요한 인형의 안내가 필요합니다. 3

감사합니다!

+0

StringIO를 먼저 읽은 다음 문자열을 pickle 할 수 있습니까? –

+0

참으로 StringIO를 사용하는 것은 좋지만 그 이유를 알고 싶습니다. – goh

답변

4

파이썬은 보안 문제로 인해 일부 기능의 산정을 허용하지 않습니다. (참조에 따라 일부 함수를 피클하는 방법이 있습니다.)

pickling 파일 객체는 파이썬의 기능 스레드에서 여러 번 요청되었으며 가장 좋은 추론은 다음과 같은 보안 프로세스에 추가 해킹 벡터를 열어 놓았 기 때문입니다. 잠재적으로 악의적 인 이벤트를 런타임에 주입 할 수 있습니다.

여러 가지 방법으로 사용하는 것이 매우 편리 할 수 ​​있지만 보안 제한이있는 것으로 보입니다.

+0

이것이 보안 문제로 인한 것이라고 확신합니까? pickle 자체는 안전하지 않기 때문에 실제로 "open"()을 포함하여 임의의 코드를 실행할 수있는 pickle 객체를 쉽게 만들 수 있습니다. – redShadow

관련 문제