Ez mennyire biztonságos? Milyen biztonsági rések lehetnek?
Egy oldalon javascript-tel állítok elő ilyen szűrési adatokat:
oszlop1 < 10,
oszlop2 = 30,
oszlop3 BETWEEN 10 AND 20,
oszlop4 LIKE '%hello%'
Ezeket tömbként megkapja a php, kitörli az összes (a BETWEEN-t, az AND-et és a LIKE-ot kivéve) sql kulcsszót. Továbbá minden elemen elvégzem a htmlspecialchars() függvényt, ami a '-ket nem alakítja át, csak a többit, hogyha szöveg lenne a keresési érték.
Aztán ezeket összerakja egy ilyen sztringgé:
"SELECT * FROM tabla1 WHERE oszlop1 < 10 AND oszlop2=30 AND oszlop3 BETWEEN 10 AND 20 AND oszlop4 LIKE '%hello%'"
Én magamtól idáig jutottam.
Ez így mennyire biztonságos sql befecskendezés ellen?
Sql befecskendezés ellen? :)
Használj mysqli-t vagy PDO-t, és előkészített lekérdezéseket.
Ja bocs, azt nem írtam le, hogy lekérdezem a táblázatot.
Csak az a lényeg, hogy az SQL utasítás meglegyen. Onnan már megy.
Az első válasz elég jól kifejti a témát szerintem:
Egyébként sokkal jobb lenne ha az sql script-et nem a PHP rakná össze, hanem az sql server írnál rá függvényt. Nagyságrendekkel könnyebb karbantartani, könnyebb újrahasznosítani a kódot és még egyéb előnyei is vannak.
A számok ne legyenek "csupaszon".
Ted azt is aposztrofok közé, vagy ellenőrizd hogy INT -e a bevitel.
Csak mert ha pl. oszlop1 < 10
Ahol a 10 változó, könnyedén SQL injektálható, mivel nincs ' -jelek közé zárva.
Na, most megcsináltam json-nel és most már ilyet küld a szervernek:
[
{"col_name": "epitesi_ev", "filter_type": "between", "from": "10", "to": "20"},
{"col_name": "fogatszam", "filter_type": "equal_to", "data": "20"},
{"col_name": "volt_e_energetikai_felujitas", "filter_type": "equal_to", "data": "1"}
]
Köszönöm a válaszokat!
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, 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!