Domanda

Qualcuno può spiegarmi in un inglese semplice cosa sono le query parametrizzate e come implementarle in PHP per un database MySQL per evitare l'iniezione SQL?

È stato utile?

Soluzione

La sezione istruzioni preparate e procedure memorizzate del PHP il manuale, sebbene si riferisca specificamente alla DOP, lo copre bene quando dice:

Possono essere pensati come una specie di modello compilato per l'SQL che un file l'applicazione vuole essere eseguita, questo può essere personalizzato tramite parametri variabili. Le dichiarazioni preparate offrono due principali vantaggi:

  • La query deve solo essere analizzata (o preparato) una volta, ma può essere eseguito più volte con lo stesso o parametri diversi. Quando la query è pronto, il database lo farà analizza, compila e ottimizza piano per l'esecuzione della query. Per query complesse che questo processo può richiedere abbastanza tempo da farlo in modo evidente rallentare un'applicazione se è presente un file bisogno di ripetere la stessa query molti volte con parametri diversi. Di utilizzando una dichiarazione preparata il l'applicazione evita di ripetere il file analizzare / compilare / ottimizzare il ciclo. Questo significa che le dichiarazioni preparate usano meno risorse e quindi corri più velocemente.

  • I parametri per le istruzioni preparate non ha bisogno di essere citato; l'autista gestisce automaticamente questo. Se uno applicazione utilizza esclusivamente preparati dichiarazioni, lo sviluppatore può esserne sicuro che non si verificherà alcuna iniezione SQL (Tuttavia, se altre porzioni di query vengono costruite con input senza caratteri di escape, SQL injection è ancora possibile).

Se stai cercando un esempio specifico di come utilizzarli, la pagina collegata sopra include anche esempi di codice.

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