Check_plain () é suficiente?

16

É check_plain () o suficiente para re-exibir o texto inserido pelos usuários no navegador, ou deveria eu ainda filtro com filter_xss () ?

Citricguy
fonte

Respostas:

26

Eu imagino que a pergunta é sobre o uso check_plain(filter_xss($string)), ou filter_xss(check_plain($string)).

check_plain()e filter_xss()tem dois propósitos diferentes, e em contraste:

  • check_plain() codifica caracteres especiais em uma sequência de texto sem formatação que é exibida como HTML.
  • filter_xss()filtra uma cadeia de caracteres HTML para evitar vulnerabilidades de script entre sites (XSS). Em particular, seu objetivo é:

    • Removendo caracteres e construções que podem enganar navegadores
    • Garantir que todas as entidades HTML sejam bem formadas
    • Garantir que todas as tags e atributos HTML estejam bem formados
    • Certificando-se de que nenhuma tag HTML contenha URLs com um protocolo não permitido (por exemplo, javascript :)

Se você usar check_plain(), a sequência passada para a função deve ser usada como texto sem formatação; nesse caso, filter_xss()não é necessário. Se você usar filter_xss(), a sequência passada para a função deve ser HTML e check_plain()não é necessária.

Se a pergunta é sobre o uso check_plain()e filter_xss()em diferentes partes da mesma string, como os greggles apontaram em seu comentário, você pode usar (por exemplo) check_plain()no conteúdo dos atributos da tag e filter_xss()em toda a tag HTML.

kiamlaluno
fonte
5
filter_xss deve ser usado em partes inteiras de html. Se você usar filter_xss em um atributo html, ele não o filtrará adequadamente. check_plain pode ser usado para filtrar com segurança atributos html. Consulte também drupalscout.com/knowledge-base/… e drupalscout.com/knowledge-base/… para obter mais informações sobre o uso dessas funções.
greggles 31/08