Différences

Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.

Lien vers cette vue

linux:dokuwiki:secu [2011/01/05 23:50]
matthieu
linux:dokuwiki:secu [2011/10/04 22:15] (Version actuelle)
matthieu ancienne révision restaurée
Ligne 1: Ligne 1:
 +{{tag>fr fr:linux fr:serveur fr:web fr:wiki}}
 ====== Sécurité dans Dokuwiki ====== ====== Sécurité dans Dokuwiki ======
  
-Cette page détaille comment sécuriser [[linux:Dokuwiki]].+Cette page détaille comment sécuriser les sections privées de [[linux:Dokuwiki]].
  
-:!: Dernière mise à jour pour la version 2010-11-07.+:!: Dernière mise à jour pour la version 2011-05-25a.
  
 ===== Créer une section privée ===== ===== Créer une section privée =====
Ligne 24: Ligne 25:
 :!: Afin de cacher les pages dans l'index, il faut activer l'option générale "sneaky_index" :!: Afin de cacher les pages dans l'index, il faut activer l'option générale "sneaky_index"
  
-===== Masquer l'existence des pages =====+===== Sécuriser la racine =====
 Les messages indiquant si l'interdiction d'accès ou inexistante de la page sont différents, il est donc possible de savoir si la page existe. Les messages indiquant si l'interdiction d'accès ou inexistante de la page sont différents, il est donc possible de savoir si la page existe.
  
-Pour contourner ce problème, il suffit de mettre par défaut le site en "denyet d'autoriser spécifiquement les pages publiques.+Si certain namespace sont cachés, pour masquer complètement leur existence, il faut bloquer l'accès à la racine "*puis autoriser les pages et namespace publique manuellement.
  
-===== Failles de sécurité =====+Par exemple : 
 +^ page     ^ group  ^ rights  ^ 
 +| *        | @ALL   | None    | 
 +| start    | @ALL   | Read    | 
 +| sidebar  | @ALL   | Read    | 
 +| linux:*  | @ALL   | Read    | 
 +| en:*     | @ALL   | Read    | 
 + 
 + 
 +===== Masquer complètement l'existence des pages non autorisées ===== 
 +Les ACL permettent de rendre les pages inaccessibles mais ne masquent pas complètement leur existence.\\
 Cette section recense les failles de sécurité que j'ai détectée lorsque des sections privées sont utilisées et fournit un correctif. Cette section recense les failles de sécurité que j'ai détectée lorsque des sections privées sont utilisées et fournit un correctif.
  
Ligne 51: Ligne 62:
 {{:linux:dokuwiki:doku_secu_1_4.png|}} {{:linux:dokuwiki:doku_secu_1_4.png|}}
  
-Le détail des problèmes est décrit dans les paragraphes suivants.+Détail des problèmes 
 +  * Même si le contenu d'une page est bloqué, il est malgré tout possible de connaitre son titre si l'option "use_heading" est activée. 
 +  * Le breadcrumb (ou piste en français) indique les pages visitées, permet de connaitre si une page existe (les pages inexistantes ne sont pas ajoutées). 
 +  * Lorsqu'une page contient des liens vers d'autres pages, ceux-ci indiquent si la page existe même lorsque l'accès y est interdit.\\ 
 +    De plus si useheading est activé, le titre de la page est également indiqué. 
 +     
 +:!: Attention, les pages générées sont cachées par dokuwiki, un utilisateur peut donc voir les liens si la page cachée a été générée pour utilisateur qui dispose des autorisations pour ces liens.\\ 
 +Il faut donc éviter d'insérer dans des pages "publiques" des liens vers des pages "privées" ou désactiver le cache des pages.
  
-==== Affichage du titre des sections privées ==== +Correctif : {{:linux:dokuwiki:dokuwiki_2011-05-25_secu1.patch|}}
-Même si le contenu d'une page est bloqué, il est malgré tout possible de connaitre son titre si l'option "use_heading" est activée. +
- +
-Correctif : {{dokuwiki-2010-11-07_secu1.patch|}}+
 <code> <code>
-:/opt/dokuwiki/inc# patch -p 1 < /root/dokuwiki-2010-11-07_secu1.patch +:/opt/dokuwiki/inc# patch -p 1 < /root/dokuwiki_2011-05-25_secu1.patch 
-patching file parserutils.php+patching file common.php 
 +patching file parser/xhtml.php
 :/opt/dokuwiki/inc# :/opt/dokuwiki/inc#
 </code> </code>
  
  
-==== Le style utilisé dans youarehere indique si la page existe ==== +==== Démo corrigée ==== 
-Il est possible de distinguer si une page existe ou non en fonction du style utilisé dans "youarehere" (il s'agit du texte en haut à gauche en titre dans la page).+Voici les screenshots avec les patchs appliqués :
  
-Correctif : {{dokuwiki-2010-11-07_secu2.patch|}}+{{:linux:dokuwiki:doku_secu_2_1.png|}}
  
-<code> +{{:linux:dokuwiki:doku_secu_2_2.png|}}
-:/opt/dokuwiki/inc# patch -p 1 < /root/dokuwiki-2010-11-07_secu2.patch +
-patching file template.php +
-:/opt/dokuwiki/inc# +
-</code>+
  
-==== Le breadcrumb indique si la page existe ==== 
-Le breadcrumb (ou piste en français) indique les pages visitées, permet de connaitre si une page existe (les pages inexistantes ne sont pas ajoutées). 
- 
-Correctif : {{dokuwiki-2010-11-07_secu3.patch|}} 
- 
-<code> 
-:/opt/dokuwiki/inc# patch -p 1 < /root/dokuwiki-2010-11-07_secu3.patch 
-patching file common.php 
-:/opt/dokuwiki/inc# 
-</code> 
- 
-==== Les liens vers les pages indiquent si une page existe et en indique le titre ==== 
-Lorsqu'une page contient des liens vers d'autres pages, ceux-ci indiquent si la page existe même lorsque l'accès y est interdit.\\ 
-De plus si useheading est activé, le titre de la page est également indiqué. 
- 
-Correctif : {{dokuwiki-2010-11-07_secu4.patch|}} 
- 
-<code> 
-:/opt/dokuwiki/inc# patch -p 1 < /root/dokuwiki-2010-11-07_secu4.patch 
-patching file parser/xhtml.php 
-:/opt/dokuwiki/inc# 
-</code> 
- 
-:!: Attention, les pages générées sont cachées par dokuwiki, un utilisateur peut donc voir les liens si la page cachée a été générée pour utilisateur qui dispose des autorisations pour ces liens.\\ 
-Il faut donc éviter d'insérer dans des pages "publiques" des liens vers des pages "privées". 
  
 ==== Patchs pour les anciennes versions ==== ==== Patchs pour les anciennes versions ====
Ligne 127: Ligne 114:
 </code> </code>
  
 +=== 2010-11-07 ===
 +Patchs pour la version 2010-11-07.
  
 +== Affichage du titre des sections privées ==
 +Même si le contenu d'une page est bloqué, il est malgré tout possible de connaitre son titre si l'option "use_heading" est activée.
  
-==== Patch de sécurité ==== +Correctif : {{dokuwiki-2010-11-07_secu1.patch|}} 
-Ce patch permet de masquer complètement les sections inaccessibles, par défaut même si il n'est pas possible de visualiser les pages, il possible de vérifier leur existence et leur titre.+<code> 
 +:/opt/dokuwiki/inc# patch -p 1 < /root/dokuwiki-2010-11-07_secu1.patch 
 +patching file parserutils.php 
 +:/opt/dokuwiki/inc# 
 +</code>
  
-  * Patch pour la version 2008-05-05: {{doku_hide-2008-05-05.patch}} + 
-  * Patch pour la version 2009-02-14: {{dokuwiki-2009-02-14_security.patch}}+== Le style utilisé dans youarehere indique si la page existe == 
 +Il est possible de distinguer si une page existe ou non en fonction du style utilisé dans "youarehere" (il s'agit du texte en haut à gauche en titre dans la page)
 + 
 +Correctif : {{dokuwiki-2010-11-07_secu2.patch|}}
  
 <code> <code>
-wiki:/opt/wiki# patch -p 1 < /root/doku_hide.patch +:/opt/dokuwiki/inc# patch -p 1 < /root/dokuwiki-2010-11-07_secu2.patch 
-patching file inc/common.php +patching file template.php 
-patching file inc/parser/xhtml.php +:/opt/dokuwiki/inc#
-patching file inc/parserutils.php +
-patching file inc/template.php +
-wiki:/opt/wiki#+
 </code> </code>
  
 +== Le breadcrumb indique si la page existe ==
 +Le breadcrumb (ou piste en français) indique les pages visitées, permet de connaitre si une page existe (les pages inexistantes ne sont pas ajoutées).
  
-Remarque le contenu des pages est caché par défaut, l'affichage des liens d'une page dépend de la personne qui a déclenché la génération de la page.+Correctif {{dokuwiki-2010-11-07_secu3.patch|}}
  
-Astuce si les droits de lecture sont appliqués sur le wiki complet, alors l'utilisateur peut savoir si un répertoire existe ou nonPour éviter cela, il suffit de n'autoriser en lecture que les répertoires autorisés.+<code> 
 +:/opt/dokuwiki/inc# patch -p 1 < /root/dokuwiki-2010-11-07_secu3.patch 
 +patching file common.php 
 +:/opt/dokuwiki/inc# 
 +</code>
  
-Remarque 2 : ne pas oublier d'activer "sneaky_index" pour sécuriser l'index+== Les liens vers les pages indiquent si une page existe et en indique le titre == 
 +Lorsqu'une page contient des liens vers d'autres pages, ceux-ci indiquent si la page existe même lorsque l'accès y est interdit.\\ 
 +De plus si useheading est activé, le titre de la page est également indiqué.
  
 +Correctif : {{dokuwiki-2010-11-07_secu4.patch|}}
 +
 +<code>
 +:/opt/dokuwiki/inc# patch -p 1 < /root/dokuwiki-2010-11-07_secu4.patch
 +patching file parser/xhtml.php
 +:/opt/dokuwiki/inc#
 +</code>
 +
 +:!: Attention, les pages générées sont cachées par dokuwiki, un utilisateur peut donc voir les liens si la page cachée a été générée pour utilisateur qui dispose des autorisations pour ces liens.\\
 +Il faut donc éviter d'insérer dans des pages "publiques" des liens vers des pages "privées".
  
-=== Détails des failles corrigées === 
-  * inc/parser/xhtml.php : dans le contenu d'une page, les liens internes révèlent si la page existe à cause du style utilisé 
-  * inc/parserutils.php : lorsque useheading est à 1, les références vers une page interdite révèlent le nom de la page (dans le titre, dans youarehere et dans le contenu des pages) 
-  * inc/template.php : lorsque youarehere est activé, le style des éléments du chemin révèlent si ils existent 
-  * inc/common.php : breadcrumb - n'ajoute pas la page à la liste si l'accès est interdit 
  
linux/dokuwiki/secu.1294267847.txt.gz · Dernière modification: 2011/01/05 23:50 par matthieu
Recent changes RSS feed Debian Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki