A galéria kezelő PHP kód közelebbről

Az előző cikkben részletesen ismertettem eme képkezelő rutin használatát. Jelen írás azokak szól, akiknek nem sikerült elvenni a kedvét az előzővel, és kíváncsiak a történet egy nagyobb szeletére.

Paranoid biztonság: a passwd paraméter

Ha nem hagy nyugodni egy esetleges bruteforce támadás gondolata, vagy csak egyes verziók készítését mindenképen a kezedben szeretnéd tartani, a passwd paramétert neked találták ki.

- Hogy is van ez? Elküldjük a jelszót a kliensnek? Akkor mi értelme az egésznek? - Magát a jelszót nem küldjük el. Nem is igazi jelszóról van szó, inkább kulcsról. Az md5 algoritmus segítségével generálunk egy kódot, ami csak egy adott kép egy adott verziójához jó.

Lekódoljuk a negyzet könyvtárat:

passwd: poi989drf

Ezután egy egyszerű negyzet/1.php hívásra a rutin nem fog képet gyártani többé. Ahhoz, hogy működjön, hitelesítenünk kell a hivatkozást. A hitelesítést egy aláírással tehetjük meg, amit query stringkét az url végére biggyeszünk. Legegyszerűbb egy függvény segítségével:

function alairt_kep ($verzio, $kepnev, $passwd) { return "/kep/" . $verzio . "/" . $kepnev . "?" . md5 ($verzio . "/" . $kepnev . "/" . $passwd); } Mivel az md5 ("negyzet/1.jpg/poi989drf") eredménye "4dd76710a8d375c1c5a0ee7676ef2d25" lesz (idézőjelek nélkül), a keletkezett URL valahogy így fest: /kep/negyzet/1.jpg?4dd76710a8d375c1c5a0ee7676ef2d25

Ezt a változatot már gondnélkül legyártja a rutin, ugyanakkor ezzel a kóddal nem készíthetjük el sem az "1.jpg" valamely másik változatát, sem pedig egy másik "negyzet" képet. Több verzió levédése esetén, sem kell kölön jelszavakat (kulcsokat) adni minden egyes védett könyvtárnak, hiszen az aláírás a verziót (könyvtárat) is tartalmazza.

Nyitott kérdések: ToDo list

  • Memóriafoglalás: A rutin jelenleg átállítja 36 megára a limitet. Ez a tapsztalatok szerint elég volt egy 6 Mpx-es képből 1024x1024-es méret generálására.
  • Hibakezelés: A legtöbb hibát detektája a kód, de minden esetben egy 404-essel tér vissza (elég szűkszavú).
  • Filterek: A szűrőket az eredeti képre (tejes méret) alkalmazom. Egy plusz lépés beiktatásával (előbb a méretezés) talán gyorsíthatóak lennének a filterek.
  • Okos keretek: Jelenleg csak fix méretű képek keretezhetők. Az okos kereteket viszont bármilyen méretű képre alkalmazhatjuk majd (pl kerekített sarkok).

Lásd még