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ètreof
, 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()
etprocess_response()
a été forcée dans un contexte asynchrone (#31905). - L’expression de requête
__in
des transformations de clé deJSONField
a été corrigée avec MariaDB, MySQL, Oracle et SQLite (#31936). - Fixed a regression in Django 3.1 that caused permission errors in
CommonPasswordValidator
andsettings.py
generated by thestartproject
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 byJSONField
with a customdecoder
(#31956). As a consequence, fetching aJSONField
with raw SQL now returns a string instead of preloaded data. You will need to explicitly calljson.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).