Project

General

Profile

Development #43221

retirer les usages de HTTP_REFERER

Added by Thomas Noël 8 days ago. Updated 8 days ago.

Status:
Nouveau
Priority:
Normal
Assignee:
-
Category:
-
Target version:
-
Start date:
22 May 2020
Due date:
% Done:

0%

Patch proposed:
No
Planning:
No

Description

Parce que ce n'est pas bien génial (facile d'y mettre n'importe quoi) et qu'on pourrait prochainement généraliser l'usage de "Referrer-policy: same-origin"

A priori :

src/authentic2/app_settings.py:    VALID_REFERERS=Setting(
src/authentic2/cbv.py:            next_url = request.META.get('HTTP_REFERER') or \
src/authentic2/decorators.py:            origin = request.META.get('HTTP_REFERER')
src/authentic2/saml/common.py:        referer = request.META.get('HTTP_REFERER')
src/authentic2/utils/__init__.py:    referer = request.META.get('HTTP_REFERER')
src/authentic2/views.py:        referer = self.request.META.get('HTTP_REFERER', '')
src/authentic2/views.py:        for valid_referer in app_settings.VALID_REFERERS:
src/authentic2_idp_cas/views.py:        referrer = request.META['HTTP_REFERER']

History

#2 Updated by Benjamin Dauvergne 8 days ago

src/authentic2/app_settings.py: VALID_REFERERS=Setting(

Je crois que ça n'est jamais utilisé, mais à vérifier, utiliser par utils.check_referer() (utilisé dans la vue de logout pour empêcher un logout direct sur un GET venant d'un autre site) et LoggedInView (pas utilisée non ?).

src/authentic2/cbv.py: next_url = request.META.get('HTTP_REFERER') or \

Pas utilisé je pense, dans tous les cas où on en a besoin je pense qu'on passe un paramètre next=.

src/authentic2/decorators.py: origin = request.META.get('HTTP_REFERER')

Il faut virer les vues JSONP et les remplacer par des appels CORS.

src/authentic2/saml/common.py: referer = request.META.get('HTTP_REFERER')

Utiliser dans un error_page(), à virer et afficher les erreurs de manière classique ou au moins uniformisée pour tout a2.

src/authentic2/utils/__init__.py: referer = request.META.get('HTTP_REFERER')

utils.check_referer() voir premier point.

src/authentic2/views.py: referer = self.request.META.get('HTTP_REFERER', '')
src/authentic2/views.py: for valid_referer in app_settings.VALID_REFERERS:

LoggedInView() voir premier point.

src/authentic2_idp_cas/views.py: referrer = request.META['HTTP_REFERER']

On peut juste remplacer par un redirect sur la vue de logout qui fait la même validation en moins bien (sans avoir connaissance des URLs des SPs CAS), on pourrait aussi poser d'accepter du POST, dans ce cas on reçoit l'entête Origin qui lui n'est jamais bloqué. Comme on déploie jamais de CAS c'est pas super important.

Also available in: Atom PDF