Mysql
 sql >> Database >  >> RDS >> Mysql

Query di iniezione MySQL

Lo farebbe a meno che tu non includa virgolette singole nel name pubblicato , che ti permetterebbe di rompere le virgolette. Esempio, pubblica il nome come:

' or 1 or '

La clausola WHERE diventa:

WHERE id = '' or 1 or '';

Ciò corrisponderebbe e recupererebbe tutte le righe nella tabella a causa di or 1 parte. Come puoi vedere, esce dalle virgolette per iniettare un po' di SQL, quindi torna tra le virgolette per rendere valida la query.

No, ma se è stato eseguito con mysqli_multi_query allora sì, potresti aggiungere più query alla fine.

Generalmente sì, ma una dichiarazione preparata sarebbe meglio. Usando l'escape, il WHERE la clausola diventerebbe (usando il mio esempio sopra):

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

Questo non è più vulnerabile perché le virgolette non possono essere separate e corrisponderebbero alle righe solo se il name corrisponde letteralmente a ' or 1 or ' il che è ovviamente improbabile.