it-swarm.it

Check_plain () è abbastanza?

check_plain () è sufficiente per visualizzare nuovamente il testo immesso dagli utenti nel browser o devo comunque filtrare con filter_xss () ?

16
Citricguy

Immagino che la domanda riguardi l'uso di check_plain(filter_xss($string)) o filter_xss(check_plain($string)).

check_plain() e filter_xss() hanno due scopi diversi e, al contrario,:

  • check_plain() codifica caratteri speciali in una stringa di testo semplice che viene quindi visualizzata come HTML.
  • filter_xss() filtra una stringa HTML per prevenire vulnerabilità cross-site-scripting (XSS). In particolare il suo scopo è:

    • Rimozione di personaggi e costrutti che possono ingannare i browser
    • Assicurarsi che tutte le entità HTML siano ben formate
    • Assicurarsi che tutti i tag e gli attributi HTML siano ben formati
    • Assicurarsi che nessun tag HTML contenga URL con un protocollo non consentito (ad es. Javascript :)

Se si utilizza check_plain(), la stringa passata alla funzione dovrebbe essere utilizzata come testo normale; in tal caso, filter_xss() non è necessario. Se si utilizza filter_xss(), la stringa passata alla funzione dovrebbe essere HTML e check_plain() non è necessaria.

Se la domanda riguarda l'uso di check_plain() e filter_xss() su parti diverse della stessa stringa, quindi, come sottolineato da Greggle nel suo commento, puoi usare (ad esempio) check_plain() sul contenuto degli attributi dei tag e filter_xss() sull'intero tag HTML.

26
kiamlaluno