sql >> Database >  >> RDS >> Mysql

Gebruik van parameters voor mysql_query

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_* !



  1. WHERE-clausule vóór INNER JOIN

  2. Hoe u door een begrensde lijst loopt in Oracle PLSQL

  3. RMAN-opdrachten mislukken met ORA-00904:"BS". "GUID":ongeldige identifier

  4. Veld met meerdere waarden importeren in Solr vanuit mySQL met behulp van Solr Data Import Handler