Suhosin – spousta nepředvídaných problémů

Suhosin je z hlediska bezpečnosti obzvlášť na sdíleném webhostingu jistě dobrá věc. Nicméně může způsobit celou řadu problémů, které se bez potřebných znalostí těžko odhalují! Které to jsou?

Dlouhou dobu jsem si myslel, že programátor nemusí znát detailně jednotlivé direktivy LAMP. Buď si doma nastaví server podlé mého staršího návodu nebo použije distribuci WAMP. Vše zvládne během pár minut a vzhůru do práce! Nutno dodat, že ve většině situací tento postup funguje velmi dobře (pomineme-li bezpečnostní problémy). Najdou se situace, kdy to ale nestačí a tady se obvykle většina programátorů (tzn. uživatelů) zasekne. Jedna z těchto situací nastane, pokud vyvíjíte na jiné konfiguraci než pak bude aplikace běžet.

Chybičky se začnou projevovat náhodně. Například se vám odešle jen prvních 20 hodnot formuláře (respektive dle nastavení). Tyto situace pro drtivou většinu uživatelů nevzniknou, protože základní konfigurace je nastavená tak, aby 99% uživatelů vyhovovala. Málokdo se s tím pak setkal a z toho vznikají obtížně řešitelné situace, které nás připraví o mnoho hodin života 🙂

Mě se to stalo právě na internetovém obchodě Lepime.cz , který je postavený na Drupal, jehož součástí jsou i rozsáhlé formuláře (ubercart, přesněji uc_options_images).

Řešení jsou zpravidla dvě, buď suhosin vypnout nebo projít jednotlivé direktivy a vyzkoušet, které to způsobují. Problém je, že na webhostingu většinou nemáte přístup k logům ani k nastavení suhosin (záleží jestli je povolená změna přes php_value v htaccess).

Nemá cenu zde uvádět kompletní výčet, který naleznete na stránkách Suhosin u mě pomohlo změnit:

suhosin.upload.max_uploads = 20 //počet polí file v html kódu ne odeslaných !!! suhosin.request.max_vars = 200 //počet všech různých polí formuláře suhosin.post.max_vars = 200 //počet všech různých polí formuláře

A na závěr jedna nepříjemná zpráva, pokud vyvíjíte pod Windows, Suhosin je nativní UNIX aplikace takže do na windows máte smůlu. Jedině virtualizovaný Linux nebo vyvíjet přímo na serveru.

Doplnění

V PHP existuje od verze PHP 5.2.12 a PHP 5.3.1 další direktiva, která může způsobovat podobné problémy max_file_uploads (vznikla jako obrana proti DoS útokům). Defaultně je nastavena na 20 a můžete přes HTML formulář odeslat pouze právě tolik políček. Nezáleží zda jsou využity nebo ne! Podrobnosti o této nové direktivě



Komentáře

Zatím nikdo nepřidal komentář, můžete být první.



O autorovi

Pari

Vítejte na mém blogu, rád bych se v krátkosti představil. Je mi 26 let. Momentálně nejvíce času věnuji projektu Lepime.cz - obchod se samolepkami na zeď a tvorbě webů postavených na redakčním systému Drupal pod značkou MEPA.CZ.