Kezdőoldal » Számítástechnika » Weblapkészítés » Hogyan védjem meg az összes...

Hogyan védjem meg az összes SQL Query-t egy oldalon Injection ellen?

Figyelt kérdés
Adott egy oldal. A tulajdonos még régen készíttette egy másik fejlesztővel. Tele van SQL Injectionnel az én feladatom kijavítani, de nem szeretnék egyesével végig menni a több ezer Queryn. Van egy function ami végzi az adatbázis kéréseket ennek egy $query paramétere. A $queryben az egész query ott van, ezért az escape string nem megy. Hogy lehetne ezt megoldani? Csak van egyszerűbb megoldás mint hogy végig menjek az egész oldalon. Tudom, már én is javasoltam a tulajdonosnak hogy egy új weboldal ésszerűbb döntés lenne, de ragaszkodik ehhez.
2017. jan. 18. 19:58
1 2
 1/11 anonim ***** válasza:
37%

Milyen oldalon van több ezer query?

Le kell cserélni normális paraméterezett query-kre, vagy valami hasonló technológiára, az a legbiztosabb.

2017. jan. 18. 20:08
Hasznos számodra ez a válasz?
 2/11 anonim ***** válasza:
0%

Olyan ami biztos és 100% -ig mindet kizár, nincs!

Az összes POST/GET/REQUEST/COOKIE -n átlehet menni,

és minden elemet végig escape() -elni.

De az se véd meg mindentől!

pl. ha "SELECT * FROM `users` WHERE `user`='{$user}' AND `password`="{$pass}" ;" -van,

akkor ha pl. ' or 1 or '1 -et ad meg beviteli mezőbe escape() nélkül a feltétel igaz lesz.

SELECT * FROM `users` WHERE `user`='' or 1 or '1' AND `password`="akarmi" ;

De pl. az escape() -se segít ha ilyen az SQL:

"SELECT * FROM `table` WHERE `id`={$id} ;"

Ha itt az ID -nak szinte bármit megadhatunk, és új SQL utasítást is hozzá fűzhetünk.

Csak szerver beállítástól függ meddig juthat el a próbálkozó.


Szóval fapados megoldás escape() minden GET/POST... -ra,

illetve ugyan így a legelején trimmelni az olyan paramétereket ahol számokat ID -t vár, hogy véletlen se adjunk tovább Injectionra lehetőséget.

Persze ezek listája is sok lehet, és csak elég egyet elfelejteni.

2017. jan. 18. 20:16
Hasznos számodra ez a válasz?
 3/11 anonim ***** válasza:
37%

"Olyan ami biztos és 100% -ig mindet kizár, nincs!"

Hát azért ez nagy baromság, SQL Injection ellen azért nem olyan nehéz védekezni.

Mint írtam, ha paramétereket használsz, akkor az SQL szerver megteszi.

2017. jan. 18. 20:27
Hasznos számodra ez a válasz?
 4/11 anonim ***** válasza:

Ebben eseteben most igaz, hogy nem lesz semmilyen megoldás sem 100%-os, ha csak magukat a query-ket akarja escapelni.


Paraméterezett lekérések és akkor jó lesz.

Így utólag tákolni ez már jobb sokkal nem lesz.

2017. jan. 18. 20:44
Hasznos számodra ez a válasz?
 5/11 anonim ***** válasza:
0%

Dehogynem lehet az injection ellen vedekezni. Marha egyszeru. A mysql_query es az osszes mysql_ fv deprecated, illetve a php 7 ota mar nincs is a nyelvben, emiatt ezek kuka es helyette pdo t hasznalj. Pdo ban a prepared statement feladata pont az, hogy a querybe megadod h hol lesznek parameterek es exec kor atadod a parametereket, onnantol kezdve pedig a pdo automatikusan megoldja helyetted az injection vedelmet. Felteve persze ha rendesen hasznaltad es a pdo preparedbe nem irtal bele valtozokat.


[link]

2017. jan. 18. 20:46
Hasznos számodra ez a válasz?
 6/11 anonim ***** válasza:
Es de, kenytelen vagy vegigmenni az oldalon, ne akard meguszni egy kis taknyolassal, vissza fog utni idovel.
2017. jan. 18. 20:47
Hasznos számodra ez a válasz?
 7/11 anonim ***** válasza:

Látom nehéz értelmeznetek a problémát! :-D

Kis olvasni való a témáról: [link]

2017. jan. 18. 21:02
Hasznos számodra ez a válasz?
 8/11 anonim ***** válasza:
0%
Tiborka ne égesd magad mégjobban plez.
2017. jan. 18. 21:07
Hasznos számodra ez a válasz?
 9/11 anonim ***** válasza:
0%

#3, #5, #6: Pont hogy nem akarja az összes SQL lekérdezést újra írni.

Ezért szeretne olyant amivel könnyen megoldja egy helyen, pl. adatbázis kapcsolódás elé be includolva...

Itt csak azt tudja szűrni, hogy milyen GET/POST.. értékeket fogad, és azokat escapelni, trimmelni...

De ez nem 100% -os védelem, csak szűkíti a lehetőségeket a támadásra.

Szóval anélkül hogy átkéne nyálazni esetleg több száz fájlt és SQL -t, sőt újra írni a dolgait, milyen megoldást tudtok javasolni!? :-)

2017. jan. 18. 21:11
Hasznos számodra ez a válasz?
 10/11 anonim ***** válasza:

Nem. Ebbe a php maga is belebukott anno amikor a magic_quotes el probalkozott. Gyak ugyanezt akarja most o is megcsinalni. Google, php emulate magic quotes, komplett megoldas lesz ra.


Feluldefinialhatja esetleg meg az elavult mysql query fvt, es azzal mokazhat meg egy kort, de a kerdesbol itelve valszeg tobb kart okoz majd vele mint hasznot. Jobban jarna ha tisztessegesen megcsinalna, nem novelne a kokany phpsok szamat.

2017. jan. 18. 21:35
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!