Bug-ul dimineții: Apache parsează %2F ca slash

De dimineață am avut următoarea problemă: trimiteam un link codat cu urlencode ca parametru rescris cu mod_rewrite:

http://foo.com/param1/param2//http%3A%2F%2Ffoo.com/

Pe serverul de test mergea. În producție mergea. Pe local îmi trântea un 404. Pentru că, din motive dubioase, trata %2F ca slash.

Se pare că este vorba de o setare buclucașă, numită AllowEncodedSlashes.

Setarea se face pe virtual hosts, nu e la nivel global (ăsta e și motivul pentru care am încercat să adaug setarea în httpd.conf fără succes):

<VirtualHost *:80>
    AllowEncodedSlashes On
</VirtualHost>

Ce nu-mi dau seama este dacă reprezintă o potențială gaură de securitate sau orice fel de riscuri…

Gaura de securitate nu are cum sa fie la nivel de apache, iar la nivel de aplicatie poate doar sa iti strice routarea. Totusi, nu as recomanda sa trimiti un url in url asa. Poti ori sa faci cu ?url=http://foo.com (si atunci nu mai incearca nici Apache sa parseze slash-ul) ori sa faci un base64 encode la formarea url-ului si un base64 decode la parsare

Ai și vreun motiv? :smile:

Da, ce ti s-a intamplat tie. sa trimiti un parametru de colo pana colo e treaba de 2 minute si nu ar trebui sa necesite sa modifici config-ul vhost-ului

1 Like

Encodeaza-l in base64, sa pari mai cu securitate :smiley: