Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.
linux:dokuwiki:secu [2011/01/06 21:59] matthieu ancienne révision restaurée |
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 "deny" et 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. | ||
+ | |||
+ | Correctif : {{:linux:dokuwiki:dokuwiki_2011-05-25_secu1.patch|}} | ||
+ | <code> | ||
+ | :/opt/dokuwiki/inc# patch -p 1 < /root/dokuwiki_2011-05-25_secu1.patch | ||
+ | patching file common.php | ||
+ | patching file parser/xhtml.php | ||
+ | :/opt/dokuwiki/inc# | ||
+ | </code> | ||
+ | |||
+ | |||
+ | ==== Démo corrigée ==== | ||
+ | Voici les screenshots avec les patchs appliqués : | ||
+ | |||
+ | {{:linux:dokuwiki:doku_secu_2_1.png|}} | ||
+ | |||
+ | {{:linux:dokuwiki:doku_secu_2_2.png|}} | ||
+ | |||
+ | |||
+ | ==== Patchs pour les anciennes versions ==== | ||
+ | === 2008-05-05 === | ||
+ | Patch pour la version 2008-05-05: {{doku_hide-2008-05-05.patch}} | ||
+ | |||
+ | <code> | ||
+ | wiki:/opt/wiki# patch -p 1 < /root/doku_hide.patch | ||
+ | patching file inc/common.php | ||
+ | patching file inc/parser/xhtml.php | ||
+ | patching file inc/parserutils.php | ||
+ | patching file inc/template.php | ||
+ | wiki:/opt/wiki# | ||
+ | </code> | ||
+ | |||
+ | |||
+ | === 2009-02-14 === | ||
+ | Patch pour la version 2009-02-14: {{dokuwiki-2009-02-14_security.patch}} | ||
+ | |||
+ | <code> | ||
+ | wiki:/opt/wiki/inc# patch -p 1 < /root/doku_hide.patch | ||
+ | patching file common.php | ||
+ | patching file parser/xhtml.php | ||
+ | patching file parserutils.php | ||
+ | patching file template.php | ||
+ | wiki:/opt/wiki/inc# | ||
+ | </code> | ||
+ | |||
+ | === 2010-11-07 === | ||
+ | Patchs pour la version 2010-11-07. | ||
- | ==== Affichage du titre des sections privées ==== | + | == 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. | 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. | ||
Ligne 64: | Ligne 128: | ||
- | ==== Le style utilisé dans youarehere indique si la page existe ==== | + | == 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). | 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). | ||
Ligne 75: | Ligne 139: | ||
</code> | </code> | ||
- | ==== Le breadcrumb indique si la page existe ==== | + | == 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). | 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). | ||
Ligne 86: | Ligne 150: | ||
</code> | </code> | ||
- | ==== Les liens vers les pages indiquent si une page existe et en indique le titre ==== | + | == 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.\\ | 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é. | De plus si useheading est activé, le titre de la page est également indiqué. | ||
Ligne 100: | Ligne 164: | ||
:!: 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.\\ | :!: 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". | Il faut donc éviter d'insérer dans des pages "publiques" des liens vers des pages "privées". | ||
- | |||
- | ==== Démo corrigée ==== | ||
- | Voici les screenshots avec les patchs appliqués : | ||
- | |||
- | {{:linux:dokuwiki:doku_secu_2_1.png|}} | ||
- | |||
- | {{:linux:dokuwiki:doku_secu_2_2.png|}} | ||
- | |||
- | |||
- | ==== Patchs pour les anciennes versions ==== | ||
- | === 2008-05-05 === | ||
- | Patch pour la version 2008-05-05: {{doku_hide-2008-05-05.patch}} | ||
- | |||
- | <code> | ||
- | wiki:/opt/wiki# patch -p 1 < /root/doku_hide.patch | ||
- | patching file inc/common.php | ||
- | patching file inc/parser/xhtml.php | ||
- | patching file inc/parserutils.php | ||
- | patching file inc/template.php | ||
- | wiki:/opt/wiki# | ||
- | </code> | ||
- | |||
- | |||
- | === 2009-02-14 === | ||
- | Patch pour la version 2009-02-14: {{dokuwiki-2009-02-14_security.patch}} | ||
- | |||
- | <code> | ||
- | wiki:/opt/wiki/inc# patch -p 1 < /root/doku_hide.patch | ||
- | patching file common.php | ||
- | patching file parser/xhtml.php | ||
- | patching file parserutils.php | ||
- | patching file template.php | ||
- | wiki:/opt/wiki/inc# | ||
- | </code> | ||
- | |||
- | |||