Notes de publication de Django 3.1.1

1er septembre 2020

Django 3.1.1 fixes two security issues and several bugs in 3.1.

CVE-2020-24583 : permissions incorrectes sur les répertoires de niveau intermédiaire avec Python 3.7+

Avec Python 3.7+, le mode FILE_UPLOAD_DIRECTORY_PERMISSIONS n’était pas appliqué aux répertoires de niveau intermédiaire créés dans le processus de téléversement de fichiers et pour les répertoires de niveau intermédiaire des fichiers statiques collectés lors de l’utilisation de la commande d’administration collectstatic.

Vous devriez examiner et corriger manuellement les permissions sur les répertoires de niveau intermédaire existants.

CVE-2020-24584 : escalade de permissions dans les répertoires intermédiaires du cache par système de fichiers avec Python 3.7+.

Avec Python 3.7+, les répertoires intermédiaires du cache par système de fichiers possédaient la valeur umask standard du système au lieu de 0o077 (aucune permission de groupe ou d’autres (others)).

Correction de bogues

  • Les retours de ligne dans les étiquettes d’actions traduites en langues est-asiatiques ont été corrigés dans la barre latérale de navigation du site d’administration (#31853).
  • Les retours de ligne dans les longs noms de modèles dans la barre latérale de navigation du site d’administration ont été corrigés (#31854).
  • Le codage des données de sessions a été corrigé dans les cas de mises à jour de plusieurs instances du même projet vers Django 3.1 (#31864).
  • Le gabarit de la barre latérale de navigation du site d’administration a été ajusté pour réduire la journalisation de débogage lors du rendu (#31865).
  • Une possibilité de perte de données a été corrigée dans select_for_update(). Lorsqu’on utilisait des champs relationnels pointant vers un modèle mandataire dans le paramètre of, le modèle correspondant n’était pas verrouillé (#31866).
  • Une possibilité de perte de données a été corrigée, à la suite d’une régression dans Django 2.0, lors de la copie d’instances de modèles avec une valeur de champ mise en cache (#31863).
  • Correction d’une régression dans Django 3.1 qui provoquait un plantage lors du décodage des données de sessions non valides (#31895).
  • Une obsolescence a été annulée dans Django 3.1, car elle provoquait un plantage lors du passage de paramètres nommés obsolètes à un jeu de requête dans TemplateView.get_context_data() (#31877).
  • La sensibilité au fil d’exécution des points d’entrée MiddlewareMixin.process_request() et process_response() a été forcée dans un contexte asynchrone (#31905).
  • L’expression de requête __in des transformations de clé de JSONField a été corrigée avec MariaDB, MySQL, Oracle et SQLite (#31936).
  • Fixed a regression in Django 3.1 that caused permission errors in CommonPasswordValidator and settings.py generated by the startproject command, when user didn’t have permissions to all intermediate directories in a Django installation path (#31912).
  • Fixed detecting an async get_response callable in various builtin middlewares (#31928).
  • Fixed a QuerySet.order_by() crash on PostgreSQL when ordering and grouping by JSONField with a custom decoder (#31956). As a consequence, fetching a JSONField with raw SQL now returns a string instead of preloaded data. You will need to explicitly call json.loads() in such cases.
  • Fixed a QuerySet.delete() crash on MySQL, following a performance regression in Django 3.1 on MariaDB 10.3.2+, when filtering against an aggregate function (#31965).
  • Fixed a django.contrib.admin.EmptyFieldListFilter crash when using on reverse relations (#31952).
  • Prevented content overflowing in the admin changelist view when the navigation sidebar is enabled (#31901).
Back to Top