Comment configurer Apache pour ne pas enregistrer certains cookies?

J’ai Apache en cours d’exécution en tant que proxy et je veux enregistrer la chaîne de cookies dans le cadre des demandes qui proviennent du proxy, mais je souhaite exclure certains cookies car ils contiennent des informations sensibles.

Je sais que Apache mod_log_config permet de consigner toute la chaîne de cookies avec:

%{Cookie}i 

Et je peux enregistrer un cookie particulier avec:

  %{Foobar}C 

Mais je veux tout enregistrer sauf certains cookies s’ils existent. Une tactique possible a été d’utiliser SetEnvIf combiné avec% {FOO} e, qui imprime une variable d’environnement, donc quelque chose comme:

  SetEnvIf = Cookie "(.*?)(Foobar=([^\s;]*;? ?))?(.*)" FILTERED_COOKIES=$1$4 

et

  %{FILTERED_COOKIES}e 

Cela fonctionne bien si Foobar existe dans la chaîne de cookies, mais si Foobar n’existe pas, si seulement il enregistre un “-“, donc je ne reçois pas tous les autres cookies.

Il est possible que mon regex soit médiocre, mais il semble fonctionner dans la casse correspondante, mais Apache ne semble pas le gérer correctement dans la casse non correspondante.

En dehors de l’écriture d’un mod Apache personnalisé, existe-t-il un moyen d’empêcher les cookies d’être enregistrés?

Une façon d’y parvenir serait d’avoir plusieurs formats de journaux. Dans votre fichier de configuration principal:

 SetEnvIf Cookie "(.*?)(Foobar=([^\s;]*;? ?))?(.*)" FILTERED_COOKIES=$1$4 LogFormat "%h %l %u %t \"%r\" %>s %b %{Cookie}i" common LogFormat "%h %l %u %t \"%r\" %>s %b %{FILTERED_COOKIES}e" filtered 

Ensuite, dans votre VirtualHost, ajoutez quelque chose comme ceci:

 CustomLog logs/access_log filtered env=FILTERED_COOKIES CustomLog logs/access_log common env=!FILTERED_COOKIES