J’aimerais avoir une rewritecond
qui devienne true
si deux variables HTTP_ORIGIN
et HTTP_HOST
sont égales. j’ai essayé
RewriteCond %{HTTP:Origin} ^http://%{HTTP_HOST}(/|$)
Mais malgré la couleur syntaxique de Netbeans, il semble qu’Apache ne remplace pas %{HTTP_HOST}
par sa valeur. Je l’ai deviné parce que
RewriteCond %{HTTP:Origin} ^http://cnfr005554(/|$) RewriteCond %{HTTP_HOST} =cnfr005554
Travaux.
Alors, comment puis-je tester que les deux variables %{HTTP:Origin}
et %{HTTP_HOST}
sont égales? (et oui, c’est pour appliquer les directives de l’OWASP afin d’atténuer le XSRF)
Dans RewriteCond
vous ne pouvez pas utiliser une variable sur le côté droit.
Vous devez l’utiliser comme ceci:
RewriteCond %{HTTP_HOST}##%{HTTP:Origin} ^(.+)##http://\1(/|$)
Nous joignons ici 2 variables en utilisant un délimiteur ##
(cela peut être n’importe quoi). Ensuite, sur RHS, nous HTTP_HOST
et capturons la valeur avant ##
qui représente HTTP_HOST
. Après ##
utilisant une back-reference \1
nous faisons notre correspondance.