Domanda

Kohana menziona usano mysql_real_escape_string agli ingressi di database disinfettare nella loro documentazione. Tuttavia, gustando alcune query di base attraverso una forma sono stati iscritti nel database esattamente come li ho inserito. Per esempio:

SELECT * FROM users WHERE username='admin' AND password='' OR ''=''

è stipulato che i dati mysql esattamente come appare. Mi aspettavo di vedere:

SELECT * FROM users WHERE username=\'admin\' AND password=\'\' OR \'\'=\'\' 

Sto utilizzando la libreria ORM invece del database, ma so che lavorano insieme. Inoltre, sto usando il costruito in libreria di Input ($ this-> ingresso-post) per raccogliere i dati da moduli. Non ho cambiato alcun controller o librerie che riguardano la sicurezza.

Non ho ancora pettinato il codice sorgente, ma non Kohana sfuggire la corda e quindi rimuovere le barre prima di entrare in un campo di db? Sono un po 'convinto che questo è il caso, ma voglio essere sicuro.

Grazie

È stato utile?

Soluzione

Quando si sfuggire una query SQL, si sta fuggendo i dati letterali in modo che non è così in conflitto con la sintassi SQL, ad esempio in modo che gli apostrofi non vengono interpretati come delimitatori di stringa. MySQL può memorizzare apostrofi escape e quant'altro davvero senza i dati che devono essere conservati con la fuga in tatto. Sarebbe un errore per memorizzare i dati nella sua forma sfuggito solo così si dovrebbe unescape di nuovo dopo il recupero di esso.

Anche se io non ho familiarità con Kohana, potete stare certi che si sta gestendo il vostro input correttamente se lei ha chiesto per memorizzare una query e che ti danno la stessa schiena query.

Altri suggerimenti

Kohana ORM vi protegge da SQL injection automaticamente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top