2009-04-20 15 views
19

Questo dovrebbe essere una domanda elementare, ma il motivo per cui è meglio usare qualcosa di simile:Perché è meglio usare filter_input()?

$pwd = filter_input(INPUT_POST, 'pwd'); 

Invece di limitarsi a:

$pwd = $_POST['pwd']; 

PS: ho capito che l'estensione del filtro può essere utilizzato con più argomenti per fornire un ulteriore livello di sanificazione.

+1

La questione ha più voti della risposta accettata. Interessante ... – sMaN

risposta

13

Non lo è. $_GET, e $_REQUEST sono filtered with default filter. filter_input(INPUT_POST, 'pwd') senza parametri aggiuntivi utilizza anche il filtro predefinito. Quindi non c'è alcuna differenza.

+0

Cercavo in giro 'filter_input' contro' htmlspecialchars' e ho notato che sembra essere obsoleto. La maggior parte delle configurazioni di PHP non filtra più questi dati, il link che pubblichi ha anche il valore di configurazione predefinito impostato come "unsafe_raw" – cspray

+3

@Charles: in entrambi i casi i dati passano attraverso il filtro predefinito, che di default è "unsafe_raw" ' , ma questo non cambia il fatto che usare 'filter_input' senza il parametro' filter' non ti dà alcun ulteriore livello di sicurezza – vartec

+0

Abbastanza corretto Grazie per le informazioni – cspray

2

Tutti i dati inviati dal client (come i dati POST) devono essere disinfettati e sfuggiti (e anche meglio controllati da integrità) per assicurarsi che non uccidano il sito Web.

SQL Injection e Cross-site scripting sono le due principali minacce per non riuscire a disinfettare i dati inviati dall'utente.

+0

È ancora necessario filter_input() se si utilizzano query con parametri e htmlspecialchars() prima di stampare i dati forniti dall'utente? – Calvin

+0

filter_input (INPUT_POST, 'pwd'); (senza altri argomenti ancora disinfetta il valore? –

+1

@ Ben: in genere hai ragione, ma questa non è una risposta a questa domanda. – vartec

Problemi correlati