SQL injectálás elleni védelem?
Tudom, hogy ez mire jó, mit tud károsítani stb...
Készítettem egy weboldalt, ami nagyon összetett (RENGETEG php van benne, mivel iszonyatosan sok adatbázis lekérdezést használ).
Mindenhol, ahol csak kellett (ahol észrevettem) használtam 2 dolgot ellene:
1. valami2 = mysql_real_escape_string($valami1)
2. if (preg_match("/^[a-zA-Z0-9]*$/i", $valami2))
Első kérdésem: Ezeken kívül még lehet valamivel védekezni ellene? (Egyáltalán kell-e?)
Második kérdésem: Van-e olyan free program, ami át tudja nekem nézni az összes weboldal részt, és ha talál benne "biztonsági rést", akkor kiírja, hogy "be tudjam foltozni"?
Azért kell a program hozzá, mert közel 120 php fileból áll, aminek a darabja legalább 20-30kb-s. Így rengeteg időbe telne átnéznem egyesével, pontról pontra.
SQL injection ellen úgy tudsz a legjobban védekezni, ha nem magad hekkeled össze a lekérdezéseket stringekből, hanem pl. stored proc-okat használsz, aminek paramétereket adsz át.
Magyarul elkülöníted a programkódot az adatoktól. Ezek után az input validálás illetve a sql escape-elés már csak hab a tortán.
Ha RENGETEG a sql, akkor RENGETEG helyen érdemes személyesen átnézned és átalakítanod.
Lehet automatic tool-okkal is, pl. itt:
de a legjobb a manuális.
A saját átnézésnél nincs jobb megoldás.
A védekezésre pedig valóban vannak bevett megoldások, ahogy azt a korábbi válaszoló is említette.
Viszont ha valóban ennyi fájlod van, amit te magad írtál, akkor ott lehet alapból a projekteddel vannak tervezési gondok is.
Nem kell az összes lekérdezésnél escape-lni a stringeket. Csak olyan pontokon, ahol a lekérdezések a felhasználói interakcióból származó stringeket használnak. Elsősorban bejelentkezésnél.
A belső lekérdezéseknél teljesen fölösleges ilyesmivel gyötörni az sql szervert.
A manuális javításnál valóban nincs biztosabb, és ha elég natívan programozol nem lehet gond megtalálni a kritikus lekérdezéseket.
Ha ilyen sok file-ból áll, akkor valóban valamit nagyon nem értesz a php-vel kapcsolatban, de nem ismerem a projektet, úgyhogy ez nem feltétlenül hiba. Próbálj a fájlokra szövegkeresőt ráengedni ha mindenképpen az összes lekérdezést vizsgálni akarod. Notepad++ is képes az összes megnyitott file-ban string-re rákeresni, de a TotalCommander is képes a szöveges fájlok tartalmában kutakodni.
Sok sikert!
Azt már megkaptad és ez a kérdés is segítség.
Ugyanis hidd el, dolgoztam már egy-két elég nagy cuccon is és ennyi fájl csak NAGYON EXTRÉM esetben keletkezik!
(Illetve nem, tévedek, életem első php-s projektjében volt ennyi kb, de akkor mindent külön pakoltam és most vissza nézve nevetek a saját hülyeségeimen. :) )
Szóóóval gyanús a dolog.
Sejtettem, hogy ilyesmi lehet a dologban, viszont ha tényleg pénz is lesz benne, akkor bocsi, de azt kell mondanom, hogy az eddigi kódokat dobd ki és kezd előröl!
De komolyan, egy ilyen oldalnak is túl sok a fájl, valami tervezési hiba garantáltan van benne és ha be is foltozol most 1-2 dolgot, még marad ezer másik.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!