Fotogalerie - bezpečnost – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Fotogalerie - bezpečnost – PHP – Fórum – Programujte.comFotogalerie - bezpečnost – PHP – Fórum – Programujte.com

 

An
~ Anonymní uživatel
19 příspěvků
30. 7. 2012   #1
-
0
-

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?

Nahlásit jako SPAM
IP: 213.151.77.–
CZechBoY+4
Věrný člen
30. 7. 2012   #2
-
0
-

z 3 řádků máme vědět jak je bezpečný celý kod?

Nahlásit jako SPAM
IP: 213.192.10.–
An
~ Anonymní uživatel
19 příspěvků
30. 7. 2012   #3
-
-1
-
Mimo téma

To mám opravdu nejradši, když si někdo nepřečte, co píšu, a navíc to dezinterpretuje.

Ukázala jsem na nejdůležitější rys skriptu (co do návrhu a moje řešení ochrany) a zeptala jsem se na jeho bezpečnost a v druhé otázce na nějaká další možná úskalí, která u tohoto návrhu hrozí.

CZechBoYi, pokud se nechceš příště ztrapnit, tak buď čti příspěvky fóra celé, nebo neodpovídej vůbec.

Nahlásit jako SPAM
IP: 213.151.77.–
CZechBoY+4
Věrný člen
31. 7. 2012   #4
-
0
-

však jsem to četl celý, ale jak mám poznat ze 3 řádků jak vypadá celej kod?

problémy jsou všude stejný...

má-li stránka administraci tak se vyskytuje session hijacking, csrf, xss

na soomu je nějaká malá zmínka

Nahlásit jako SPAM
IP: 213.192.10.–
An
~ Anonymní uživatel
19 příspěvků
31. 7. 2012   #5
-
0
-

OK, zkusím to ještě jednou.

Ostatní bezpečnostní rizika (která, jak říkáš, jsou všude stejný) si většinou umím najít, prostudovat a uplatnit. Zajímá mě ale tento specifický způsob, ve kterém (nejen pro admina ale i pro klienty) je v parametru předávána relativní cesta k fotografiím ve fotogalerii a zajímá mě jestli test na existenci předaného adresáře (který dělám na začátku skriptu) je dostatečné bezpečnostní opatření.

Celý kód vkládat nechci (měj pro to prosím pochopení), ale řeknu, že po tomto testu s proměnnou $_GET['folder'] pracuju jako s cestou k podadresářům – používám ji jako parametr při čtení adresáře (klasicky přes opendir() nebo glob()), zobrazuju název této cesty v hlavičce html a nadpisech, vkládám ji do html jako součást cesty k obrázkům fotogalerie (všude, kde ji vkládám do html, jde přes htmlspecialchars()). V adminu tato cesta navíc figuruje ve vykonávání několika administračních úkonů jako např. generování miniatur - vždy jako cesta k vybraným fotkám.

Pokud je v $_GET['folder'] předána cesta, která neexistuje, nebo se pomocí ../../.. snaží dostat pod úroveň fotogalerie, je přepsána na prázdný řetězec, což je interpretováno jako výchozí úroveň ("titulní stránka") fotogalerie, která nabídne seznam složek pro procházení.

Ještě jednou se tedy ptám – je výše uvedené třířádkové testování oné proměnné pro relativní cestu dostatečně crackuvzdorné? Víte někdo o nějakém triku nebo hodnotě, která by takto mohla být přes URL podstrčena a dokázala by obejít tuto kontrolu a způsobit nějakou škodu?

Díky.

Nahlásit jako SPAM
IP: 213.151.77.–
CZechBoY+4
Věrný člen
31. 7. 2012   #6
-
0
-

v praxi se to asi dělá přes nějaký id v databázi, ale ty asi databázi nemáš k dispozici, nebo se ti nechce tahat na takovou prkotinu že?

maj ty alba podalba?

tohle by snad jako ošetření mělo stačit

Nahlásit jako SPAM
IP: 213.192.10.–
An
~ Anonymní uživatel
19 příspěvků
31. 7. 2012   #7
-
0
-

(ano, fungují tam i podadresáře - pak proměnná obsahuje lomítko, které je odděluje)

Myslím si, že v tomhle případě není moc důvodů zapojovat do toho ještě databázi - klient, pro kterého to dělám, chce jednou za čas přistoupit na ftp, vytvořit nový adresář, nakopírovat do něj pár stovek fotek, a spolehnout se, že galerie bude ihned fungovat a bez potřeby jakékoliv synchronizace zohledňovat změny.

Nahlásit jako SPAM
IP: 213.151.77.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 17 hostů

Podobná vlákna

Online fotogalerie — založil Vítězslav Titl

On-line fotogalerie — založil Vítězslav Titl

Obrázky (fotogalerie) — založil karel

Fotogalerie v ASP.NET — založil plasmo

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý