È pericoloso lasciare che l'utente inserisca in una dichiarazione sql LIKE

0

Supponendo di voler implementare un motore di ricerca, è pericoloso lasciare l'utente in un LIKE . Ad esempio:

SELECT user FROM table WHERE user LIKE "[user input]"

In questo caso, presumo che l'utente possa digitare caratteri come % , _ Supponiamo inoltre di ignorare correttamente i caratteri di iniezione come " , ' , '

Sto pensando a Mysql DDOS possibile se il database contiene una grande quantità di utenti. C'è un altro / i rischio / i?

    
posta Xavier59 03.08.2016 - 00:35
fonte

1 risposta

4

Il rischio non è diverso dall'accettazione dell'input dell'utente per una valutazione regolare. È comunque necessario disinfettare i dati e utilizzare procedure sicure come le stored procedure.

Il problema univoco con LIKE entra in gioco quando viene usato ma non dovrebbe esserlo. Ad esempio, la tua applicazione vuole recuperare qualcosa con un determinato ID ma utilizzando LIKE potrebbe restituire un ID simile ma diverso. Uno non sarebbe tornato al tuo utente finale. Ma questo non è un problema che dovresti avere con un motore di ricerca.

Su una nota aggiuntiva che usa LIKE con MySQL ti darò un motore di ricerca molto semplice e limitato che non scala affatto bene. Per alternative, considera la corrispondenza con le colonne ricercabili di FullText o l'uso di qualcosa pensato per il lavoro come Lucene, Sfinge , Elasticsearch, Solr.

    
risposta data 03.08.2016 - 01:28
fonte

Leggi altre domande sui tag