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.