Ero curioso di sapere se è possibile proteggere da un attacco di SQL injection rimuovendo tutti gli spazi da un input di String?
Ho letto su SQL Injection all'indirizzo OWASP , ma non menzionano nulla sulla rimozione degli spazi , quindi ero curioso di sapere perché avrebbe funzionato o no?
Stavo guardando questa domanda , che chiede circa trim
, e la risposta in alto dice questo:
No, adding a trim will not prevent sql injection.
trim
only removes space on the outside of your string.Select * from aTable where name like '%'+@SearchString+'%'
If you @SearchString held something like
'' update aTable set someColumn='JackedUpValue' where someColumn like '
Then when you put it all together and execute it dynamically you would get
Select * from aTable where name like '%' update aTable set someColumn='JackedUpValue' where someColumn like '%'
Tuttavia, se hai preso quella stringa di ricerca
update aTable set someColumn='JackedUpValue' where someColumn like
ed eseguito l'operazione mostrata in questa domanda , non è vero? prendi
updateaTablesetsomeColumn='JackedUpValue'wheresomeColumnlike
che non dovrebbe essere eseguito, giusto?
Sono curioso di sapere se esiste qualche forma di iniezione SQL che possa sconfiggere questo? Ci sono una parola comandi pericolosi? Se questo può essere sconfitto, rimuovere gli spazi potrebbe almeno aiutare un po 'con la difesa?
Nota: sto facendo questa domanda solo per curiosità, non come modo per aggirare usando i metodi "appropriati" di SQL Injection Prevention.