Re: problème avec l'utilisation de SPIP d errière un proxy
Cédric Morin <[email protected]>
| Newsgroups | gmane.comp.web.spip.devel |
|---|---|
| Message-ID | <[email protected]> |
Hello,
j'ai envoyé sur la branche dev un patch qui intègre la prise en compte
de ces entêtes conventionnels
http://core.spip.org/projects/spip/repository/revisions/23093
si cela va a tout le monde on peut le reporter en branche stable 3.1
voire 3.0.
--
Cédric
Cédric Morin a écrit :
> Non il ne s'agirait pas de forcer https, mais d'activer la prise en
> compte des headers HTTP_X_FORWARDED_PORT HTTP_X_FORWARDED_PROTO
>
> Cette partie du code n'est pas nickel dans url_de_base(), et est à revoir.
> Aujourd'hui on tourne avec un Apache en proxy pour https (on fait donc
> Apache:443 > Varnish > Apache:80), sans modification de SPIP, mais avec
> les quelques lignes suivants en prepend php. Cela peut s'appliquer à
> n'importe quel proxy frontal, les headers étant conventionnels :
>
> if (isset($_SERVER['HTTP_X_FORWARDED_PORT'])
> AND $_SERVER['HTTP_X_FORWARDED_PORT']==='443'
> AND isset($_SERVER['HTTP_X_FORWARDED_PROTO'])
> AND $_SERVER['HTTP_X_FORWARDED_PROTO']==='https') {
> $_SERVER['HTTPS'] = 'on';
> $_SERVER['SERVER_PORT'] = '443';
> if (isset($_SERVER['REQUEST_SCHEME'])) {
> $_SERVER['REQUEST_SCHEME'] = 'https';
> }
> if ($_SERVER['REMOTE_ADDR'] == '127.0.0.1') {
> $i = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']);
> $i = reset($i);
> $_SERVER['REMOTE_ADDR'] = $i;
> }
> if (strpos($_SERVER['HTTP_X_FORWARDED_HOST'],',')!==false){
> $h = explode(',',$_SERVER['HTTP_X_FORWARDED_HOST']);
> $_SERVER['HTTP_X_FORWARDED_HOST'] = trim(end($h));
> }
> }
>
> Notez au passage que je découpe les HTTP_X_FORWARDED_FOR
> HTTP_X_FORWARDED_HOST pour le cas où on aurait du double proxy (j'ai eu
> le cas sur un site transféré d'un autre serveur que j'ai mis en proxy le
> temps de la propagation DNS, du coup on avait empilement des en-têtes
> avec 2 IP et 2 hosts dans les headers).
>
> Le problème d'appliquer cela par défaut c'est de risquer de l'injection
> de headers. Il faut verifier avec precaution si cela peut empoisonner le
> cache d'un visiteur normal, ou peut-être il faut ajouter les 2 headers
> en signature du cache. Ou n'activer cela que via une configiration ou
> define ?
>