Domanda

Ho visto molti articoli e domande su mysqli e tutti sostengono che protegge dalle iniezioni di sql. Ma è a prova di sciocco o c'è ancora un modo per aggirarlo. Non mi interessano gli script di cross site o gli attacchi di phishing, ma solo iniezioni di sql.

Quello che avrei dovuto dire per cominciare è che sto usando dichiarazioni preparate. Questo è ciò che intendevo con mysqli. Se uso istruzioni preparate senza alcuna concatenazione di stringhe, allora è infallibile?

È stato utile?

Soluzione

  

Ma è una prova folle o c'è ancora un modo per aggirarlo.

No, devi sapere cosa stai facendo. Se si utilizzano parametri associati (una funzionalità fornita da MySqli), si è completamente al sicuro dagli attacchi del tipo di iniezione da questo vettore di attacco . Ciò non impedisce a te - il programmatore - di incorporare direttamente le stringhe e quindi di abilitare gli attacchi di iniezione. Devi usare la funzione come previsto.

Ri: Modifica

  

Quello che avrei dovuto dire per cominciare è che sto usando dichiarazioni preparate. Questo è ciò che intendevo con mysqli. Se uso istruzioni preparate senza alcuna concatenazione di stringhe, allora è infallibile?

Foolproof è ancora una parola così pericolosa. Ma sei al sicuro dagli attacchi di iniezione per le variabili associate a istruzioni preparate. Questo perché i parametri associati vengono trasmessi separatamente dalla query SQL. Con il "tradizionale" approccio string-embed, il server di database deve analizzare l'input e ci sono molti casi limite (Charset ecc.). Quando i dati e la query vengono inviati separatamente, non viene eseguita alcuna analisi effettiva (almeno non l'analisi dei dati variabili).

Altri suggerimenti

Non protegge dalle iniezioni di sql meglio del vecchio modulo mysql, ma lo rende più semplice per lo sviluppatore, che ora può usare istruzioni preparate invece di chiamare mysql_real_escape_string.

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