Witam,
W nagłówku requestu z systemu zewnętrznego przekazywane mam zmienne w postaci: $ABC: VAL
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0)
$WSAT: Negotiate
$WSIS: false
$WSSC: http
$WSPR: HTTP/1.1
Niestety nie są odstępne w request.env. (z tego co przeczytałem zmienna musi zaczynać się literą i nie może zawierać innych znaków poza [a-z][A-Z][0-9]-_)
W starej wersju Rails takie zmienne są dostępne w env jako HTTP_$ABC, ale coś musiało się pozmieniać w Rack/Rails.
W jaki sposób dobrać się do tych zmiennych?
Może ktoś zna sposób, aby zmienić nazwę zmiennej w headerze w apache’u z mod_headers?
Znalazłem rozwiązanie. Problem/Nowy feature w Apache 2.4
This is a documented feature in apache 2.4. See httpd.apache.org/docs/trunk/new_features_2_4.html
Translation of headers to environment variables is more strict than before to mitigate some possible cross-site-scripting attacks via header injection. Headers containing invalid characters (including underscores) are now silently dropped.
Zastosowałem obejście opisane tu:
Accept broken headers
Co ciekawe skonfigurowanie loga:
CustomLog /var/log/httpd/access_log "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\" \"%{$WSRU}i\" \"%{$WSRH}i\" "
loguje nieprawidłowe zmienne.
1 Like