Ten eerste, waar dit over gaat, is SQL-Injection . Het is eigenlijk gewoon de mogelijkheid om query's op de database te wijzigen via gebruikersinvoer.
Laten we een voorbeeld bekijken:
Vraag:
SELECT temp1 FROM temp WHERE temp2 = 'VAR1';
Nu zullen we VAR1 de waarde toekennen van:'; DROP TABLE *; --
En we krijgen:
SELECT temp1 FROM temp WHERE temp2 = ''; DROP TABLE *; --';
Met mysql_real_escape_string
het zou er zo uitzien:
SELECT temp1 FROM temp WHERE temp2 = '\'; DROP TABLE *; --'
mysql_real_escape_string
'beveiligt' een string voor gebruik binnen een query.
Maar uiteindelijk u moet stoppen met het gebruik van de mysql_*
helemaal . Ze zijn verouderd en worden als onveilig beschouwd als het gaat om het voorkomen van SQL-injectie of andere manieren om de zoekopdrachten te temperen.
Je moet gewoon stoppen met het op deze manier samenvoegen van zoekopdrachten en begin voorbereide verklaringen te gebruiken , die niet alleen gemakkelijker te gebruiken zijn, SQL-injectie standaard voorkomen, maar ook de snelheid van uw toepassing kunnen verbeteren.
Voor PHP zijn er twee extensies die zijn ontworpen om de hele mysql_*
. te sluiten geopend:
En ik zeg het nog een keer:Stop met het gebruik van mysql_*
!