Zdravím.
Udělala jsem pro klienta fotogalerii v PHP.
V jednom k tomu určeném adresáři jsou podadresáře s JPGčkama (i do více úrovní) a také skript, který je zobrazuje a umožňuje uživateli těmito podadresáři procházet.
Rozhodla jsem se k tomu, že podadresáře (vlastně i celá relativní cesta k obrázkům) se předávají jako parametr v URL, případně být zadaný nemusí a pak se zobrazí úvodní stránka galerie. (Toto bych nechtěla měnit.) Teď se zabývám bezpečností.
Chci zajistit, aby podstrčením nějaké hodnoty se nikdo nedostal někam, kam by neměl (z tohoto pohledu kamkoli pod úroveň adresáře s fotogalerií). To řeším takto:
if($_GET['folder'])
if(!is_dir($_GET['folder']=substr(realpath($_GET['folder']),strlen(realpath('.'))+1)))
unset($_GET['folder']);
//... dál pracuji s proměnnou $_GET['folder'] coby s cestou k obrázkům
//... dál pracuji s proměnnou $_GET['folder'] coby s cestou k obrázkům
Skript hledá a zobrazuje pouze JPG soubory - jiné soubory, ať už obrázky či úplně jiné typy, tam admin stejně nedává
otázka: Je toto dostatečná ochrana?
otázka: Napadá vás ještě něco, na co bych si měla dát pozor?