Come utilizzare ORM correttamente per prevenire l'iniezione SQL?

-1

Ho letto qui che l'uso di ORM (come nHibernate) non impedisce necessariamente l'iniezione SQL; ad esempio, se continui a creare query dinamiche utilizzando il tuo framework ORM, sei ancora vulnerabile.

Bene, allora qual è l'uso corretto di ORM per evitare tutti i tipi di iniezione SQL? Dovremmo usare le query parametrizzate usando il nostro framework ORM? Qualcosa come nHibernate sfugge a caratteri SQL speciali come virgolette singole così gli sviluppatori non scrivono un pezzo di codice come questo:

private string SafeSqlLiteral(string inputSQL) { return inputSQL.Replace("'", "''"); }

    
posta Goli E 27.01.2015 - 01:10
fonte

2 risposte

2

Fine, then what is the proper use of ORM to avoid all types of SQL injection?

Non lo fai.

ORM non è stato creato per impedire SQL Injection. Se si desidera impedire SQL Injection - avere una solida comprensione di come funziona SQL Injection e applicare questa conoscenza al codice che si scrive. In questo modo, conoscerai il modo corretto per prevenirlo (anche nei casi che implicano l'uso di SQL dinamico).

Non ho scavato nel codice sorgente di NHibernate, quindi non posso dirti come tentano di prevenire SQL Injection (se ti interessa davvero, ti suggerirei di fare un po 'di ricerca). Se dovessi scommettere, direi che usano l'SQL parametrizzato poiché questo è lo standard del settore per prevenire SQL Injection.

Per impedire l'SQL Injection in SQL dinamico devi utilizzare query parametrizzate, in particolare sp_executesql .

    
risposta data 27.01.2015 - 06:30
fonte
0

Non sempre impedisce l'iniezione SQL, gli esempi tipici includono l'iniezione di secondi ordre negli script o persino le stored procedure che utilizzano i dati letti da una tabella senza parametrizzarli o convalidare i dati.

    
risposta data 27.01.2015 - 03:04
fonte

Leggi altre domande sui tag