Come per la sanificazione dei dati per XSS PHP

March 3

XSS è una vulnerabilità di sicurezza nelle applicazioni Web che viene sfruttata dagli hacker per ottenere l'accesso alle informazioni personali di un utente, di impersonare un altro utente o per ottenere l'accesso a un server Web con privilegi elevati. Impostare precauzioni per i vostri programmi PHP per disinfettare l'input dell'utente per prevenire attacchi XSS.

istruzione

1 Utilizzare la funzione "htmlspecialchars" per disinfettare ingresso esterno dove si potrebbe consentire markup HTML nell'input. Chiamare la funzione di sostituire il "meno" e "maggiore di" segni con i codici HTML "& lt;" e "& gt;" per contrastare un tentativo di iniettare uno script dannoso con il tag "<script>". Per esempio:

htmlspecialchars echo ($ userinput);

2 Inserire la funzione "striptags" per eliminare i tag HTML dove nessun codice HTML sarebbe stato permesso. Non usare "striptags" nei casi in cui sarebbe stato consentito usi legittimi di HTML, o può portare alla perdita di dati. Per esempio:

echo "Impossibile accedere con il nome utente". striptags ($ _ GET [ 'username']); // Nessun codice HTML consentito in un nome utente

3 Utilizzare le virgolette doppie per circondare gli attributi HTML che coinvolgono l'input dell'utente. Passare il parametro "ENT_QUOTES" per la funzione "htmlspecialchars". Questo fornisce una protezione aggiuntiva contro gli attacchi che sfrutteranno l'iniezione di codice in attributi HTML che utilizzano singolo invece di virgolette doppie. Per esempio:

<img src = "loaded.png" alt = '<? php echo htmlspecialchars ($ USER_DESCRIPTION, ENT_QUOTES);?>' />

<img src = "loaded.png" alt = "<? php echo htmlspecialchars ($

descrizione dell'utente);?>" />

4 Chiamare la funzione "UrlEncode" per la massima protezione in sanificazione dei dati che può apparire come un attributo HTML. Ci vuole un approccio più aggressivo per la conversione di caratteri potenzialmente dannosi. Per esempio:

<Input type = "text" value = "<? Php echo urlencode ($ user_input);?>" />

5 Utilizzare la funzione "mysqlrealescapestring" per disinfettare ingresso prima di usarlo in operazioni di database con l'estensione "mysql" per prevenire attacchi di SQL injection. Per esempio:

$ Query = 'SELECT * FROM dati WHERE usercriteria = "' mysqlrealescapestring ($ usercriteria). '".';

6 Utilizzare l'estensione "mysqli" invece di "mysql" insieme con le istruzioni preparate per avere l'input dell'utente estensione fuga per voi e prevenire gli attacchi SQL injection. Per esempio:

$ Stmt = $ mysqli-> prepare ( "SELECT * FROM dati WHERE usercriteria =?");
$ Stmt-> bind_param ( 's', $ usercriteria);
$ Stmt-> execute ();