Check_plain () è abbastanza?


Risposte:


26

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 i 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 check_plain()e filter_xss()su parti diverse della stessa stringa, quindi, come sottolineato da Greggle nel suo commento, è possibile utilizzare (ad esempio) check_plain()il contenuto degli attributi dei tag e filter_xss()l'intero tag HTML.


5
filter_xss è pensato per essere utilizzato su interi pezzi di HTML. Se usi filter_xss su un attributo html, non lo filtrerà correttamente. check_plain può essere utilizzato per filtrare in modo sicuro gli attributi html. Vedi anche drupalscout.com/knowledge-base/… e drupalscout.com/knowledge-base/… per maggiori informazioni sull'uso di queste funzioni.
Greggles,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.