sql >> Database >  >> RDS >> Mysql

MySQL-injectiequery

Dit zou het geval zijn, tenzij u enkele aanhalingstekens opneemt in de geposte name , waarmee u de aanhalingstekens kunt doorbreken. Post de naam bijvoorbeeld als:

' or 1 or '

De WHERE-clausule wordt:

WHERE id = '' or 1 or '';

Dit zou overeenkomen met en ophalen van alle rijen in de tabel vanwege de or 1 een deel. Zoals je kunt zien, breekt het uit de aanhalingstekens om wat SQL te injecteren en gaat het terug naar de aanhalingstekens om de query geldig te maken.

Nee, maar als het werd uitgevoerd met mysqli_multi_query dan zou je aan het einde meerdere zoekopdrachten kunnen toevoegen.

Over het algemeen wel, maar een voorbereide verklaring zou beter zijn. Met behulp van escapen, de WHERE clausule zou worden (met mijn voorbeeld hierboven):

WHERE id = '\' or 1 or \'';

Dit is niet langer kwetsbaar omdat de aanhalingstekens niet kunnen worden afgebroken en alleen overeenkomen met rijen als de name komt letterlijk overeen met ' or 1 or ' wat natuurlijk onwaarschijnlijk is.



  1. Doe mee op dinsdag 9 april voor het laatste Microsoft Access-nieuws

  2. MySQL LOAD DATA INFILE:werkt, maar onvoorspelbare lijnterminator

  3. MOD() Functie in Oracle

  4. postgresql retourneert 0 als de geretourneerde waarde null is