Utilisateurs/SiteClubs.md
... ...
@@ -109,8 +109,28 @@ ipm-itk a été configuré pour réduire le nombre de processus originaux :
109 109
#### Sécurisation de PHP
110 110
111 111
PHP a été configuré pour augmenter la sécurité des scripts php. La configuration est dans `/etc/php5/apache2/php.ini`.
112
-Notemment des fonctions potentiellement dangereuses ont été désactivées via `disable_functions`, puis l'*open-basedir* a été chrooté vers `/srv/www/`.
113
-Finalement lors d'une auth avec un .htaccess auprès (par exemple) du LDAP, on récupère dans $_SERVERPHP_AUTH_USER le nom de l'utilisateur. Malheureusement, dans sa configuration par défaut, on peut aussi récupérer dans $_SERVERPHP_AUTH_PW le mot de passe entré par l'utilisateur. Pour éviter cela, on ajoute dans php.ini une option, `auto_prepend_file` qui permet de préciser un script exécuté avant tout script PHP. Dans son incarnation actuelle, ce script met juste dans PHP_AUTH_PW une valeur bidon. Il a fallu faire un cas spécial pour phpMyAdmin, qui récupère le mot de passe pour se connecter à la base SQL.
112
+Notemment des fonctions potentiellement dangereuses ont été désactivées via `disable_functions`, puis l'*open-basedir* a été chrooté vers `/srv/www/`.
113
+Finalement lors d'une auth avec un .htaccess auprès (par exemple) du LDAP, on récupère dans $_SERVERPHP_AUTH_USER le nom de l'utilisateur. Malheureusement, dans sa configuration par défaut, on peut aussi récupérer dans $_SERVERPHP_AUTH_PW le mot de passe entré par l'utilisateur. Pour éviter cela, on ajoute dans php.ini une option, `auto_prepend_file` qui permet de préciser un script exécuté avant tout script PHP. Dans son incarnation actuelle, ce script met juste dans PHP_AUTH_PW une valeur bidon. Il a fallu faire un cas spécial pour phpMyAdmin, qui récupère le mot de passe pour se connecter à la base SQL.
114
+
115
+Extrait de `/etc/php5/apache2/php.ini`:
116
+
117
+```ini
118
+disable_functions = pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_g\
119
+et_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
120
+open_basedir = /srv/www/
121
+auto_prepend_file = "/etc/php5/apache2/unset_auth_pw.php"
122
+```
123
+
124
+Et le script de prepend ``/etc/php5/apache2/unset_auth_pw.php` :
125
+```php
126
+<?php
127
+if (! preg_match('/^phpmyadmin\\./', $_SERVER['HTTP_HOST'])) {
128
+ $_SERVER['PHP_AUTH_PW'] = "bouh !";
129
+}
130
+
131
+?>
132
+```
133
+
114 134
115 135
#### Reverse-Proxy
116 136