A programozó is ember

Mert a programozók élete nemcsak játék és mese...

Tartsd közel

Hawaii-i PHP

2009.11.01. 03:23 :: pifta

Remélem jól írtam le a címben...:) Franc abba a sok i betűbe.

Mindenesetre a mostani történet igen régen esett meg, ennek ellenére jól mutatja azt, hogy a programozó néha a biztonság és a gyorsaság érdekében olyan dolgokat tesz, amik nemhogy nem biztonságosak, de hál istennek még értelmük sincs.

Kedves előző munkatárs fejlesztett egy belső alkalmazást (persze lehetett volna ez eladásra is, valószínű akkor is így készül el), ennek admin felületén pedig volt egy keresés. Egy formon összedobálta a user a feltételeket, aztán kapott egy listát. A listában minden elemhez kellett egy checkbox, és egy textbox. Nahmost ugye adott a probléma, mivel a lista maga is egy form, amiben megszerkesztgethetnek bizonyos dolgokat, akkor hogyan fogjuk tudni, hogy egy szerkesztési művelet valójában melyik mezőre vonatkozik az adatbázisban?

Jozan parasztember úgy gondolkodik, hogy mivel ilyenkor egy tömböt kapunk, ez lehetne asszociatív, de ezt nem biztos hogy triviális megoldani (egyébként anélkül sem bonyolult), hát tároljuk valahogy a lekérdezést, ami elvezetett a listához. Ennek két módja is lehetséges, ha már mindenképp ehhez ragaszkodunk, az egyik, hogy a keresés adatait hidden mezőben biggyesztjük a formhoz, és ujra legeneráljuk a lekérdezést. A másik, hogy szerveroldalon eltároljuk valahova a sessionhoz, vagy bármi a szerveren lévő tárolóba, ahhonnan majd előhúzzuk mikor szükséges lesz. Persze, ahogy gondolom, ezek túl hely-, vagy időigényes műveletek, és hát optimalizálás mindenek felett...

Ígyhát kolléga a következő optimálisnak gondolt megoldást eszelte ki: Született honolulu és ungabunga néven két változó. Ugye elég semmitmondóak? Nyugtázhatjuk, kb másfél órát ástam mire rájöttem melyik mire jó. Na, ugye, ha ezeket én a formban használom arra, hogy tárolják a lekérdezést, akkor az nem igazán biztonságos. Mert bárki megnézi a forrást, és már látja is az adatbázist. Gondolom itt komoly fejtörés lehetett, mire kijött, hogy akkor base64ecnode() neki. Talán ezen a ponton válhatott egyébként kétfelé a dolog, ugyanis a honolulu a "where" előtti részt tárolta kódolva, ungabunga pedig a where utánit. Igen a kliensoldalon, igen ránézésre is base64encode-olt adatnak tűntek, igen elég gyorsan meglett mit tartalmaznak, csak akkor még nem értettem minek, na ez volt másfél óra.

Képzelhetitek mennyire fogtam a fejem mikor megvilágosodtam, miközben megtaláltam és átnézem a vonatkozó részt kb 300k forrásból. Persze tanulság nem sok van, maximum ajánlani tudom mindenkinek, hogy ezt senki ne próbálja ki otthon.:)

Szólj hozzá!

Címkék: php hülyeség

A bejegyzés trackback címe:

https://developers.blog.hu/api/trackback/id/tr531490137

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása