Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
php:securisation_open_basedir [2011/08/27 02:05] – import - création Anael MOBILIA | php:securisation_open_basedir [2014/05/27 03:32] (Version actuelle) – modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | <style float-right> | + | <style float-right> |
- | <style float-left> | + | <style float-left> |
- | ====== | + | ====== |
// | // | ||
- | <note tip>Présentation rapide.</ | + | <note tip>Explication de l’intérêt de l' |
< | < | ||
- | * Aucun prérequis pour ce tutoriel. | + | * [[php: |
+ | * [[apache: | ||
</ | </ | ||
\\ | \\ | ||
- | ===== grand1 | + | ===== Faille de sécurité |
- | lorem ipsum | + | Mon serveur web est opérationnel, |
+ | * http:// | ||
+ | * http:// | ||
- | \\ | ||
- | ===== Liens ===== | ||
- | * [[.:|Retour à la liste des tutoriels XXX]] | ||
- | * [[:|Retour à la liste des tutoriels]] | ||
- | ++__But : Mettre en place la directive [PHP|tag: | + | Chacun des deux sites doit-être indépendant : comme deux maisons, on ne rentre pas sans être invité |
- | %%% | + | |
- | !!!! I) Faille de sécurité | + | |
- | Le serveur marche sans soucis, et j' | + | |
- | * http:// | + | |
- | * http:// | + | |
- | Chacun des deux sites (même si le second n'est qu'une bête page html :-p) doit-être indépendant : comme deux chambres séparées, on ne rentre pas chez l' | + | |
- | %%%Hors, par défaut, je peux accéder avec un script PHP à n' | + | |
- | %%%Une proof of concept très simple : | + | |
- | ///[php] | + | |
- | <?php | + | |
- | $f = fopen('/ | + | |
- | echo fread($f, 150); | + | |
- | fclose($f); | + | |
- | ?> | + | |
- | /// | + | |
- | Retourne : | + | |
- | ///[html] | + | |
- | < | + | |
- | < | + | |
- | </ | + | |
- | /// | + | |
- | C'est quand même gênant, d' | + | |
- | !!!! II) Correctif | + | Or, par défaut, je peux accéder avec un script PHP à n'importe qu'elle page ! |
- | Fort heureusement, nous pouvons réduire l' | + | |
- | %%% Direction le fichier de config Apache de chaque site : | + | |
- | ///[bash] | + | |
- | nano / | + | |
- | /// | + | |
- | On y ajoute l' | + | |
- | /// | + | |
- | < | + | |
- | php_admin_value open_basedir / | + | |
- | </ | + | |
- | /// | + | |
- | Recharge de la config Apache | + | |
- | /// | + | |
- | service apache2 reload | + | |
- | /// | + | |
- | Et le tour est joué :) | + | |
- | %%%Afin de s'en assurer, on relance le script | + | |
- | /// | + | |
- | [Sun Jun 20 02:21:23 2010] [error] [client xx.xxx.xxx.xxx] | + | |
- | /// | + | |
- | Il faut configurer | + | Voici un script permettant d' |
- | %%%Cette manip permet de parer à un très grand nombre d' | + | <code php><? |
- | %%%Note : Suite à une demande sur IRC, si on souhaite préciser | + | $f = fopen('/ |
- | %%%Exemple : | + | echo fread($f, 150); |
- | ///[apache] | + | fclose($f); |
- | | + | ?></ |
- | php_admin_value open_basedir / | + | |
- | </ | + | Ce script exécuté depuis www.anael.eu retourne le contenu de la page d' |
- | /// | + | <code html>< |
+ | < | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | Il s'agit d'une faille de sécurité importante : que se passerait-il si j' | ||
+ | |||
+ | |||
+ | ===== Correctif ===== | ||
+ | PHP comporte une directive de configuration permettant de limiter les répertoires auxquels un script peut avoir accès ! | ||
+ | |||
+ | Pour ce faire, il faut éditer le fichier de configuration Apache du domaine | ||
+ | <code bash> | ||
+ | |||
+ | Et définir un répertoire dans l'arborescence | ||
+ | <code apache>< | ||
+ | php_admin_value open_basedir / | ||
+ | </ | ||
+ | |||
+ | Rechargement de la config Apache | ||
+ | <code bash> | ||
+ | |||
+ | La configuration de PHP empêche maintenant de remonter dans l' | ||
+ | |||
+ | < | ||
+ | |||
+ | Afin de s'en assurer, on relance le script PoC : | ||
+ | <code apache> | ||
+ | |||
+ | <note important> | ||
+ | |||
+ | Cette configuration | ||
+ | |||
+ | < | ||
+ | < | ||
+ | php_admin_value open_basedir / | ||
+ | </ | ||
+ | </note> | ||
+ | |||
+ | \\ | ||
+ | ===== Liens ===== | ||
+ | * [[.:|Retour à la liste des tutoriels PHP]] | ||
+ | * [[:|Retour à la liste des tutoriels]] |