Vérification des droits de création/consulation de topics #40
Labels
No Label
Core
bug
duplicate
easy
enhancement
help wanted
invalid
performance
proposal
question
security
warning
wontfix
No Milestone
No Assignees
2 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: devs/PCv5#40
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Le commit
415cfd8d8f
ajoute la vérification des droits pour créer un sujet dans un forum. Par contre, c'est hardcodé et ça sera compliqué de traiter les forums privés, et autres, par la suite.Pour gérer les droits des forums privés, je pense faire ça dans le routeur, avec un équivalent du
@priv_required
.Et du coup on peut laisser ça comme ça puisque si on a pas le droit d'avoir accès au forum en question, on se prend une 403 à la fois pour la consultation et l'écriture.
À voir (je sais pas si je suis clair)…
Tu as écrit
"/news" in f.url
puis"/news" not in f.name
😉Il y aussi des choses du genre privilèges spéciaux mais je ne crois pas qu'on en ait définis à paramètre, donc tout va bien.
La 403 me gêne pas tant que tu peux pas légitimement voir une page, remplir le formulaire, et tomber dessus (par exemple soit le topic lui-même est 403, soit le formulaire est pas affiché).
La fatigue --'
Pour les privilèges spéciaux osef, à partir du moment où
member.priv("some-priv")
retourneTrue
ça passe. Et la méthode en question checke les privilèges spéciaux et ceux des groupes.On veut que :
Pour le point 1, ce que j'ai codé fait le taf. Pour le point 2, si on lève une 403 sur toutes les routes non autorisées (
/forums/creativecalc/?.*
par exemple), non seulement on empêche la consultation, mais aussi la création de topic.Il suffit ensuite de n'afficher les forums privés qu'à ceux qui en ont les droits à la racine du forum.
Exactement, il suffit de ne pas afficher le formulaire :lol:
Oui, parfait. Je suggère de lever une 403 sur
/forums/creativcalc
(les pages dont tout le monde connait l'existence) et éventuellement une 404 sur les pages de topics (pour ne pas révéler qu'elles existent, comme d'hab). Aussi niveau indexation on est sûrs que les pages 404 sont jamais indexées même si les URLs s'échappent par erreur.Y'a pas que ça. Ça vérifie aussi à l'envoi du formulaire que l'utilisateur a bien le droit de l'envoyer.
Oui bien sûr, ce que je voulais dire c'est "pour satisfaire le critère que j'ai demandé" (ne pas avoir de 403 en utilisation normale) ça suffit. Pas que c'est assez sécurisé.
Comme pour prouver mon argument, tout à l'heure Yatis a trouvé un topic privé par un moteur de recherche... x)
Cette issue a été résolue indirectement par
6f98cba65e
(il y a 4 mois).Pour résumer les points abordés dans ce fil :
is_default_accessible()
etis_default_postable()
àFalse
, ce qui les rend inacessibles pour les utilisateurs non-connectés ou sans privilèges.forum.access.<prefix>
etforum.post.<prefix>
autorisent l'accès (pour l'instant utilisés avecprefix={admin,creativecalc}
), de même queforum.post-news
(pour les news) etforum.post-anywhere
.Il y a d'autres subtilités, mais on retiendra surtout que quand l'utilisateur est pas connecté on utilise
Member.can_access_forum()
,Member.can_post_in_forum()
,Member.can_edit_post()
etMember.can_delete_post()
; si l'utilisateur n'est pas connecté on utiliseForum.is_default_accessible()
etForum.is_default_postable()
.