Il me semble qu'on a fait fausse route avec la protection des
documents par voie de action=acceder_document ; d'une part ça oblige à
contrôler tous les accès à tous les documents, d'autre part ça fait
des URLs moisies.
La méthode utilisée par un site comme Flickr est à la fois beaucoup
plus simple et raisonnablement sûre : c'est tout simplement de donner
aux documents des URLs qu'on ne peut pas deviner tant qu'on ne nous
les a pas donnés. En gros, au lieu d'avoir
IMG/pdf/rapport_secret.pdf
on aurait
IMG/pdf/190a753cb79e85/rapport_secret.pdf
Assortie d'une interdiction de lister le répertoire IMG/pdf/
S'il n'y a pas d'objection je code ça (dans acces_restreint3) et je
démonte tout le bazar correspondant à acceder_document dans le core.
C'est un peu ce que tu as fait avec hash_documents mais pour une autre fonction. C'est pour ça que j'aimais tant ton plugin. Il serait bien aussi de faire ça pour les arton1 et tout le bazar qui s'ensuit.
donc, je suis POUR !
Il y a quand même un problème avec cette méthode par rapport à l'autre.
Avec l'autre il faut avoir un compte avec mot de passe,
et les gens savent qu'une mot de passe il ne faut pas le laisser traîner,
et la plupart des formulaires de saisies de mots de passe crypte la connexion.
Avec la métode du nommage introuvable d'URL, on trouvera cette information dans quantité d'endroits
(les logs des serveurs, les historiques des navigateurs etc)
et elles vont circuler en clair sur le réseau.
Ca me parait donc quand même un recul en terme de confidentialité.
N'y aurait-il pas moyen d'organiser le code pour qu'une simple surcharge puisse proposer l'une ou l'autre des méthodes ?
Avec la métode du nommage introuvable d'URL, on trouvera cette information
dans quantité d'endroits
(les logs des serveurs, les historiques des navigateurs etc)
et elles vont circuler en clair sur le réseau.
Ca me parait donc quand même un recul en terme de confidentialité.
Il me semble que le contrôle d'accès se fait déjà actuellement au
niveau de l'URL : on vérifie si tu es connecté pour te donner une
adresse moisie spip.php?action=acceder_document&cle=1234567876543&file=truc.jpg
; mais acceder_document ne vérifie plus les droits, elle vérifie
seulement la cohérence de l'URL, ce qui fait que c'est exactement
pareil qu'une URL introuvable -- à ceci près que c'est moisi
Elle ne vérifie pas les droits mais elle vérifie que tu es connecté
et que ton mot de passe est bien celui qui a permis de calculer cette clé.
Ce n'est donc pas pareil.
Il me semble que le contrôle d'accès se fait déjà actuellement au
niveau de l'URL : on vérifie si tu es connecté pour te donner une
adresse moisie
spip.php?action=acceder_document&cle=1234567876543&file=truc.jpg
; mais acceder_document ne vérifie plus les droits, elle vérifie
seulement la cohérence de l'URL, ce qui fait que c'est exactement
pareil qu'une URL introuvable -- à ceci près que c'est moisi
je ne connais pas le systeme actuel de acceder_document, mais si c'est
juste une question d'URL, est-ce qu'on ne peut pas considerer ta
proposition comme une forme d'URLS propres ?
spip.php?action=acceder_document&cle=1234567876543&file=truc.jpg
devient : IMG/jpg/1234567876543/truc.jpg
ou : IMG/protege/1234567876543/truc.jpg
Un avantage est que si on veut que la cle change a certaines occasions (ou
suivant l'utilisateur, etc.), c'est gerable car on ne depend pas
strictement du systeme de fichiers.
juste une question d'URL, est-ce qu'on ne peut pas considerer ta
proposition comme une forme d'URLS propres ?
spip.php?action=acceder_document&cle=1234567876543&file=truc.jpg
devient : IMG/jpg/1234567876543/truc.jpg
ou : IMG/protege/1234567876543/truc.jpg
hé bien euh... je préconise l'inverse : revenir à des choses simples.
Un avantage est que si on veut que la cle change a certaines occasions (ou
suivant l'utilisateur, etc.), c'est gerable car on ne depend pas
strictement du systeme de fichiers.
avec la méthode que je propose, on peut héberger ses documents
protégés sur un serveur distant, par exemple. Donc c'est la méthode
actuelle qui dépend le plus du système de fichiers.
Si tu veux changer la clé, par contre, tu es obligé de faire une
identification au niveau de l'accès, et donc en effet mettre un
système de plus ; ce que je propose c'est que dans ce cas, ce système
soit placé au niveau du contrôle de l'URL "native" du doc, lequel
correspond toujours la même ressource, même si ses droits d'accès ont
changé.
Ah bas en effet, quand tu as introduit le secret du site pour éviter le couteux appel à l'API d'autoriser: http://trac.rezo.net/trac/spip/changeset/10998/spip/ecrire/action/acceder_document.php
tu as même laissé tomber la vérification de connexion, qui, elle, est peu couteuse.
En l'état, je t'accorde que ce que tu proposes est de niveau de confidentialité équivalent,
mais je suis contrarié de voir que ce niveau a été atteint il y a déjà longtemps.
Donc, je redis que trouver une organisation qui permette de choisir me semblerait le mieux,
mais ce n'est peut-être pas évident.
Donc, je redis que trouver une organisation qui permette de choisir me
semblerait le mieux, mais ce n'est peut-être pas évident.
Tu peux tout à fait (dans un plugin, du coup) ajouter un .htaccess
dans IMG/ qui routera les appels vers le script PHP qui convient.
Ca pourra même se faire document par document, afin d'éviter la cata
qu'on avait lorsqu'on devait afficher 10 images à l'intérieur d'un
texte : certains serveurs s'écroulaient -- ce qui avait, je crois,
motivé cette modif il y a 23 mois.
Ah bas en effet, quand tu as introduit le secret du site pour éviter le couteux appel à l'API d'autoriser: http://trac.rezo.net/trac/spip/changeset/10998/spip/ecrire/action/acceder_document.php
tu as même laissé tomber la vérification de connexion, qui, elle, est peu couteuse.
En l'état, je t'accorde que ce que tu proposes est de niveau de confidentialité équivalent,
mais je suis contrarié de voir que ce niveau a été atteint il y a déjà longtemps.
+1
Si on veut protéger, c'est pour que l'accès soit bloqué aux non autorisés. L'obfuscation ne suffit pas, les URL de docs vont vite se retrouver dans des mails, tweets, et autres...
Donc, je redis que trouver une organisation qui permette de choisir me semblerait le mieux,
mais ce n'est peut-être pas évident.
Un plugin Accès_obfusqué ?
Sérieusement, avoir de plus « belles » URL pour les docs protégées, comme le propose Fil, ce serait très bien, mais rester en l'état de non protection, gros bof.
Oui, je confirme ce problème, qui est toujours présent avec acces_restreint puisqu’on fait un appel à la base sur chaque document pour vérifier les droits.
Cela met en down le service SQL sur les d’hébergements mutu qui limitent le nombre de connexion simultanées à SQL (constaté chez une pauvre spipeuse qui ne comprenait pas pourquoi son site était down presque tout le temps. J’ai mis un peu de temps à trouver, compte tenu de la lourdeur des tests entrainée par l’indisponibilité récurrente du site).
ah ben tiens, voila un sujet sur lequel je peux faire un petit retour d'experience... la protection des documents, c'est mon dada depuis la 1.8 !
Alors :
1- la solution de l'url inconnues, c'est déjà pas mal (ca pourrait etre le comportement standard) mais c'est pas toujours suffisant (en gros, ca veut dire que si on est autorisé à voir un document, on peut donner de facto cette autorisation à qui on veut...)
2- il y a plusieurs choses dans la protection des documents :
- les documents liés aux articles proposés => seuls les redacteurs doivent y avoir accès à priori
- les documents liés aux articles en prepa => seuls les auteurs (+admins ?) doivent y avoir accès à priori
- les documents liés aux articles publiés => tout le monde doit y avoir accès, il faut eviter de ralentir l'affichage, surtout quand on parle d'images qui sont potentiellement utilisées (genre l'image de fond ou la puce personnalisable)
- les documents peuvent etre liés aux rubriques ou encore à autre chose
- on voudrait bien sur le tout lié aux autorisations
Je me suis pas mal battu en 1.8 et 1.9, et le meilleur compromis que j'ai trouvé, c'est un wrapper appelé via un .htaccess dans /IMG (c'est la que je détermine selon les sites quels extensions proteger => en général, je ne protege pas les images, ou uniquement les jpg en evitant d'en utiliser pour l'habillage)
mais l'idée, c'est d'utiliser le cache au maximum pour eviter les traitements systematiques quand ils ne sont pas necessaires.
Donc en gros, dans on /IMG/.htaccess, j'ai :
RewriteCond %{REQUEST_URI} (.*)IMG/(.*)\.(doc|pdf|sxw|ppt|ps|txt|xls|html|DOC|PDF|SXW|PPT|PS|TXT|XLS|HTML)$
RewriteRule (.*) /spip.php?page=wrapper&link=$1
et mon squelette wrapper.html ressemble en gros à ca (la c'est sur un vieux site, j'ai fait pas mal d'essais, et je passe par un script un peu plus sioux au lieu de spip.php pour squizzer tout ca pour l'admin entre autre...) :
[**********(#REM)**********
acces aux documents par les visiteurs non authentifies
=> peuvent voir les documents des articles publies,
des rubriques et des breves