2013-03-20 7 views
8

Utrzymuję aplikację produkcyjną Django 1.5.Zapewnienie bezpiecznego ładowania JSON, XML i YAML w projekcie Django

Ostatnio było dużo hałasu na temat różnych luk w zabezpieczeniach związanych z ładowaniem obiektów JSON, XML i YAML. Jeśli dobrze rozumiem, dane wejściowe zostały starannie spreparowane w celu wykorzystania błędów w funkcjach ładowania.

Nie mam pojęcia, gdzie Django (lub dziesiątki aplikacji innych firm, z których korzystamy) korzysta z każdego z tych protokołów. Jak mogę być bezpieczny przed takimi lukami? Czy muszę się upewnić, że Django ładuje bezpiecznie JSON, XML i YAML?

+3

Zapewnienie, że Django ładuje bezpiecznie JSON, XML i YAML, jest zadaniem programistów Django. Mogę was zapewnić, że w twoim kodzie jest prawdopodobnie więcej problemów związanych z bezpieczeństwem niż w Django (chociaż te oczywiście mają większy wpływ i są bardziej prawdopodobne, że zostaną znalezione). – delnan

+0

Jaki hałas masz na myśli? Jakieś linki dotyczące specyfiki? –

+5

Uważam, że mówi on o [Railsach YAML exploit] (http://rubysource.com/anatomy-of-an-exploit-an-in-depth-look-at-the-rails-yaml-vulnerability/) i biblioteka Pythona XML analizująca wektory ataków DOS] (http://blog.python.org/2013/02/announcing-defusedxml-fixes-for-xml.html). –

Odpowiedz

1

Django nie przyjmuje domyślnie zakodowanych przez użytkownika danych wejściowych w tych formatach, a aplikacje innych producentów również nie będą, ale warto sprawdzić części, które są dla użytkownika oczywiste. Najwięksi będą dostawcy API (Tastypie, Django REST Framework itd.). Jeśli korzystasz z aktualnych wersji, powinieneś być bezpieczny, ale warto go przetestować/potwierdzić.

Jeśli ładujesz coś w swojej aplikacji z tych formatów, użyj metody defusedxml i YAMLs safe_load. Standardowy moduł biblioteki powinien być bezpieczny przed tego rodzaju exploitami.