Nem a Weblabor, én fogalmaztam pontatlanul. Elnézést, frissítettem a blogmark leírását miszerint Drupal alapú webhelyet törtek, de nem a core-on, hanem egy third party modulon keresztül.
Azt értem, hogy SQL injection hiba nem a core-ban volt, de hogy lehet, hogy egy modul bármilyen lekérdezést futtathat? Nincs belső szabvány ami kényszeríti a drupal escape-rendszerének használatát?
A mysql_query alapból használja a legutóbb mysql_connect-tel megnyitott kapcsolatot, azaz ha nem adod vissza a kapcsolat azonosítót (ahogy ez nem is történik meg drupalban) akkor is tudja használni azt.
Bár nem értek a Drupalhoz, de úgy tudom, hogy ott először aktiválni kell a modulokat. Ha ez így van, akkor az adminfelület nyugodtan megnézhetné, hogy nem használ-e a modul tiltott vagy káros megoldásokat -- például mysql_query függvényt --, és adott esetben megtagadná a kifogásolt modul használatát.
Azért nincs értelme mysql függvényket hivogatni egy modulból mert akkor mysql specifikus lesz a modulod is. (Tehát gondolom nem ezt használja a szóbanforgó sebezhető modul sem).
Kis keresés után találtam ezen oldalt: http://api.drupal.org/api/function/db_query
...ahol nyilvánvalóvá vált, hogy a legfrissebb verzióig nem volt escape-elés közvetlenül a query függvényben. (Tehát stringek toldozását-foltozását ajánlotta).
Harmadrészt természetesen még így is megteheti az ember hogy nem használja a paramétereket (az új függvényt egy paraméterrel hívja), szóval hülyeségre nincs gyógyszer, de legalább ahol lehet a paraméteres query változatra kéne rászoktatni a modul-írókat.
...ahol nyilvánvalóvá vált, hogy a legfrissebb verzióig nem volt escape-elés közvetlenül a query függvényben. (Tehát stringek toldozását-foltozását ajánlotta).
Ezt nem értem.
Másrészt a modul-howto dokumentáció sem bátorít ennek használatára:
Ez egy hibás oldal volt, javítottam. Az ajánlott gyakorlat a placeholderek használata minden lekérdezésben (még akkor is, ha biztosak vagyunk benne, hogy a lekérdezésbe illesztett változó nem tartalmazhat problémás kódot).
dezinformáció
Javítottam
Tervezési hiba?
szabály
Szerinted hogyan?
Nem kell nagyra gondolni...
mysql_query
Vbence ötlete jó
Bár nem értek a Drupalhoz, de úgy tudom, hogy ott először aktiválni kell a modulokat. Ha ez így van, akkor az adminfelület nyugodtan megnézhetné, hogy nem használ-e a modul tiltott vagy káros megoldásokat -- például mysql_query függvényt --, és adott esetben megtagadná a kifogásolt modul használatát.
Mit szóltok ehhez?
mysql
Kis keresés után találtam ezen oldalt:
http://api.drupal.org/api/function/db_query
...ahol nyilvánvalóvá vált, hogy a legfrissebb verzióig nem volt escape-elés közvetlenül a query függvényben. (Tehát stringek toldozását-foltozását ajánlotta).
Másrészt a modul-howto dokumentáció sem bátorít ennek használatára:
http://drupal.org/node/82968
Harmadrészt természetesen még így is megteheti az ember hogy nem használja a paramétereket (az új függvényt egy paraméterrel hívja), szóval hülyeségre nincs gyógyszer, de legalább ahol lehet a paraméteres query változatra kéne rászoktatni a modul-írókat.
placeholder
Ezt nem értem.
Ez egy hibás oldal volt, javítottam. Az ajánlott gyakorlat a placeholderek használata minden lekérdezésben (még akkor is, ha biztosak vagyunk benne, hogy a lekérdezésbe illesztett változó nem tartalmazhat problémás kódot).
igen...
D7