How to disallow pickle serialization in celery

前端 未结 3 1646
刺人心
刺人心 2021-02-01 13:41

Celery defaults to using pickle as its serialization method for tasks. As noted in the FAQ, this represents a security hole. Celery allows you to configure how tasks get seria

相关标签:
3条回答
  • 2021-02-01 14:14

    I was getting "ContentDisallowed: Refusing to deserialize untrusted content of type pickle (application/x-python-serialize)"

    having:

    CELERY_ACCEPT_CONTENT = ['json']
    

    wasn't enough... I had to also add the followings to settings:

    CELERY_TASK_SERIALIZER = 'json'
    CELERY_RESULT_SERIALIZER = 'json'
    
    0 讨论(0)
  • 2021-02-01 14:18

    Now that Celery supports configuration on a per-app basis, there is a cleaner way to restrict the content that a consumer will execute.

    c = celery.Celery()
    c.conf.update(CELERY_ACCEPT_CONTENT = ['json'])
    

    See the Celery docs on security for details, and for more advanced security options, such as signing content.

    0 讨论(0)
  • 2021-02-01 14:29

    I got an answer from the celery-users mailing list (From Ask Solem to be specific). Add these two lines to the config (celeryconfig/settings):

    from kombu import serialization
    serialization.registry._decoders.pop("application/x-python-serialize")
    
    0 讨论(0)
提交回复
热议问题