misc: add form token when form is single page (#43348) #1161

Merged
fpeters merged 1 commits from wip/43348-single-page-form-token into main 2024-03-01 09:34:16 +01:00
Owner
No description provided.
fpeters force-pushed wip/43348-single-page-form-token from 1ac00454fc to e5cf5e2d02 2024-02-18 14:17:47 +01:00 Compare
fpeters reviewed 2024-02-18 14:28:12 +01:00
@ -5976,0 +5996,4 @@
form_data['magictoken'] = 'xxx'
# simulate call from remote/attacker site (form token prevents this)
resp = app.post(formdef.get_url(), params=form_data)
assert 'The form you have submitted is invalid.' in resp.text
Author
Owner

C'est la situation initialement citée dans le ticket.

C'est la situation initialement citée dans le ticket.
@ -5976,0 +5998,4 @@
resp = app.post(formdef.get_url(), params=form_data)
assert 'The form you have submitted is invalid.' in resp.text
# with confirmation page
Author
Owner

Puis celle-ci pour valider le commentaire du ticket :

avec confirmation: parce qu'il y aurait forcément affichage de la page de confirmation, voir retour à la première page le magictoken étant peut-être validé dans ce cas.

Puis celle-ci pour valider le commentaire du ticket : > avec confirmation: parce qu'il y aurait forcément affichage de la page de confirmation, voir retour à la première page le magictoken étant peut-être validé dans ce cas.
@ -5976,0 +6014,4 @@
resp = app.post(formdef.get_url(), params=form_data, status=302)
assert resp.location == formdef.get_url()
# with multiple pages
Author
Owner

Et cell-ci pour l'autre partie du commentaire :

multi-page: parce qu'on reviendrait forcément à la première page vu que le magictoken est mauvais (mais ça j'en suis pas certain, si les champs sont optionnels sur les premières pages, avec le bon step peut-être que ça passerait, mais ça fait beaucoup de si) demandant une interaction de l'utilisateur,

Et cell-ci pour l'autre partie du commentaire : > multi-page: parce qu'on reviendrait forcément à la première page vu que le magictoken est mauvais (mais ça j'en suis pas certain, si les champs sont optionnels sur les premières pages, avec le bon step peut-être que ça passerait, mais ça fait beaucoup de si) demandant une interaction de l'utilisateur,
@ -623,1 +624,4 @@
form = self.create_form(page, displayed_fields, transient_formdata=transient_formdata)
if page_change is False and page_error_messages:
# ignore form token when there are other errors
form._names.pop('_form_id', None)
Author
Owner

Cette partie est un peu nulle, nécessaire pour conserver l'affichage d'un message d'erreur adéquait dans test_form_item_data_source_error_no_confirmation (sans ça c'est le message jeton invalide qui s'affiche, ce qui serait trompeur).

Cette partie est un peu nulle, nécessaire pour conserver l'affichage d'un message d'erreur adéquait dans test_form_item_data_source_error_no_confirmation (sans ça c'est le message jeton invalide qui s'affiche, ce qui serait trompeur).
@ -1005,0 +1009,4 @@
if len(self.pages) == 1 and not self.formdef.confirmation:
# if there's a form with a single page, no confirmation, add native quixote
# CSRF protection.
form.add(FormTokenWidget, form.TOKEN_NAME)
Author
Owner

C'est ici la correction au ticket, l'utilisation du FormTokenWidget de quixote pour le cas des formulaires mono-pages sans confirmation.

C'est ici la correction au ticket, l'utilisation du FormTokenWidget de quixote pour le cas des formulaires mono-pages sans confirmation.
fpeters changed title from WIP: misc: add form token when form is single page (#43348) to misc: add form token when form is single page (#43348) 2024-02-18 14:28:19 +01:00
lguerin approved these changes 2024-03-01 09:30:38 +01:00
fpeters merged commit 555ae506e5 into main 2024-03-01 09:34:16 +01:00
fpeters deleted branch wip/43348-single-page-form-token 2024-03-01 09:34:16 +01:00
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: entrouvert/wcs#1161
No description provided.