Rails 5, Apache - dostępne zmienne

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