ugrás a tartalomhoz

Ingyenmenet - Nem dodzsem!

Török Gábor · 2009. Szep. 26. (Szo), 21.52
Drupal alapú webhely feltörése külső modulon keresztül
 
1

dezinformáció

Edit · 2009. Szep. 26. (Szo), 23.08
Nem a Drupalt törték. Szomorú, hogy még a Weblabor is félreinformál.
2

Javítottam

Török Gábor · 2009. Szep. 27. (V), 09.25
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.
3

Tervezési hiba?

vbence · 2009. Szep. 27. (V), 11.41
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?
4

szabály

Poetro · 2009. Szep. 27. (V), 12.30
Ajánlás ugyan van, hogyan kell Drupal modult írni, azonban nem mindenki tartja be az ajánlásokat.
5

Szerinted hogyan?

Nagy Gusztáv · 2009. Szep. 27. (V), 13.48
Hogyan lehetne egy programozót arra kényszeríteni, hogy pl. az API-t használja?
6

Nem kell nagyra gondolni...

vbence · 2009. Szep. 28. (H), 10.51
Ha nem adod oda neki a mysql kapcsolatot akkor csak az API marad.
7

mysql_query

Poetro · 2009. Szep. 28. (H), 12.33
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.
8

Vbence ötlete jó

Wabbitseason · 2009. Szep. 28. (H), 12.44
Vbence ötlete szerintem alapvetően 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?
9

mysql

vbence · 2009. Szep. 28. (H), 13.58
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).

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.
10

placeholder

Edit · 2009. Szep. 29. (K), 11.23
...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).
11

igen...

vbence · 2009. Szep. 29. (K), 14.49
A placeholderre gondoltam. A string toldozás alatt ehhez hasonló dolgokra gondolok:
$query = "SELECT nev FROM tabla WHERE varos='" . db_escape ($varos) . "'";
A gyors javításért respect. Még egy kis hiba van benne. Szerintem
$queryResult =  db_query($query, $start_time, $end_time);
helyett
$queryResult =  db_query($query, array ($start_time, $end_time));
kellene.
12

D7

Edit · 2009. Szep. 29. (K), 16.58
Drupal 7-ben. Az egy kicsit még odébb van. :) 5-ösben, 6-osban nem kell tömb.