Domanda

Ho un sacco di $ _POST variabili di essere inviato in via una forma lunga e, invece di difficile codifica ognuna con un mysql_escape_string() è ok per me fare il seguente? Non so se questo è in realtà sicura e / o il codice vitali.

foreach ($_POST as &$post_item){
    $post_item = mysql_escape_string($post_item);
}

Sono abbastanza certo che perché sto utilizzando il &, è passando in per riferimento, non il valore, quindi sono in realtà cambiando il valore nel $ _POST.

Inoltre, dovrei usare mysql_real_escape_string() invece?

EDIT: Sto usando DOP e preparo () insieme con il metodo di cui sopra. Questo prendersi cura di esso per me?

È stato utile?

Soluzione

Perché non usare array_map()?

array_map(mysql_real_escape_string, $_POST);

Ma in realtà si dovrebbe utilizzare le dichiarazioni parametrizzate / preparato.

mysql_real_escape_string() prende il carattere database corrente impostata in considerazione, mysql_escape_string() non lo fa. Quindi il primo è la migliore alternativa in confronto.

Modifica (seguito di modifica del PO alla domanda):

Dal momento che già fare DOP istruzioni preparate, non v'è alcuna necessità di modificare i valori. DOP si occupa di tutto, questo è il punto centrale di esso ( Se davvero mettere tutti i dati nei parametri, cioè - solo concatenazione di stringhe per costruire istruzioni SQL porta al disastro con DOP o senza). Sfuggire i valori in anticipo porterebbe a valori sfuggiti nel database.

Altri suggerimenti

Sì, si dovrebbe utilizzare mysql_real_escape_string(), se avete intenzione di seguire questa strada. Ma il modo corretto per assicurarsi che le variabili sono sicuri da inviare al database utilizza con parametri query che sono forniti in PHP attraverso sia le mysqli funzioni o DOP .

In aggiunta ai commenti precedenti, un altro vantaggio di utilizzare le query parametrizzati è che il database sarà in grado di fare ottimizzazioni migliori e probabilmente usare un piano di query nella cache in modo da ottenere prestazioni migliori.

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