Apache 2.4.60: Problém se zakódovaným znakem otazníku (?) v URL (%3F) způsobí chybu 403

by Zdeněk Večeřa 0 Comments

Apache od verze 2.4.60 z důvodů zvýšení bezpečnosti „vypíná“ podporu pro znaky „%3F“ v URL, které při routování URL adres prochází přes pravidla modulu mod_rewrite, tedy například RewriteRule. Pokud se vám v takové URL objeví zakódovaný znak otazníku (?), který je reprezentován znaky „%3F“, tak zpracování skončí chybou 403.

Od stejné verze 2.4.60 je současně zaveden nový flag „UnsafeAllow3F“, kterým můžete znaky %3F dodatečně povolit v pravidlech mod_rewrite:

RewriteCond %{REQUEST_URI} !\/$
RewriteCond %{REQUEST_URI} \.(php|xml|pdf)*$
RewriteRule .* /index.php?wu=/$0 [NE,QSA,L,UnsafeAllow3F]

O flagu se dočtete na oficiálních stránkách Apache. Použití znaku %3F se řeší například na stackoverflow.com.

Obecně se doporučuje nový flag nepoužívat. Místo něj raději zamezte, aby se %3F dostalo do URL standardní cestou. Můžete znak otazníku pomocí JavaScriptu nahradit za jiný znak (nebo spíše sekvenci znaků), které pak v PHP převedete zpět na otazník, anebo řetězec v JavaScriptu zakódujte pomocí Base64.

Leave a reply

Your email address will not be published.

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Tato stránka používá Akismet k omezení spamu. Podívejte se, jak vaše data z komentářů zpracováváme..