Questão de Programação — Linguagens de programação — FCC 2019
Programação›Linguagens de programação
Código
fc057835
Banca
FCC
Órgão
TRF - 4ª REGIÃO
Ano
2019
Cargo
Analista Judiciário - Sistemas de Tecnologia da Informação
Ataques Cross-Site Scripting (XSS) muitas vezes usam caracteres especiais em campos de formulário para acessar áreas restritas do site. Para evitar esse tipo de ataque, um programador PHP recebeu o login de um usuário, digitado em um campo de formulário, da seguinte forma.$login = filter_input(INPUT_POST, 'login', I);Considerando que no campo login do formulário foi digitado <comando> , para que os sinais de < (menor) e > (maior) sejam trocados por suas respectivas referências de nome de entidade, ficando no formato <comando>, a lacuna I deverá ser preenchida corretamente por
AFILTER_SANITIZE_MAGIC_CHARACTERS
BFILTER_SANITIZE_FULL_ENTITY_CHARACTERS
CFILTER_SANITIZE_SPECIAL_CHARS
DFILTER_SANITIZE_FULL_SPECIAL_ENTITIES
EFILTER_SANITIZE_MAGIC_QUOTES
Revelar gabarito e comentário▾
GabaritoC — FILTER_SANITIZE_SPECIAL_CHARS
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
PHP – Filtros de Entrada (XSS)
Gabarito: letra C. A constante FILTER_SANITIZE_SPECIAL_CHARS converte caracteres especiais HTML (<, >, ", &) em suas referências de entidade (ex.: < vira <). Esse é o filtro correto para evitar injeção de script em campos de formulário, conforme descrito no enunciado.
A função filter_input() aplica um filtro a uma variável externa. No PHP, os filtros de sanitização removem ou codificam caracteres indesejados. O filtro FILTER_SANITIZE_SPECIAL_CHARS realiza exatamente a codificação de entidades HTML, protegendo contra XSS. Os demais filtros listados não executam essa conversão específica.
Alternativa A — ❌ Incorreta
FILTER_SANITIZE_MAGIC_CHARACTERSnão existe no PHP. É uma invenção; nenhum filtro padrão da extensão Filter usa esse nome.
Alternativa B — ❌ Incorreta
FILTER_SANITIZE_FULL_ENTITY_CHARACTERSnão é uma constante válida do PHP. A nomenclatura correta para conversão completa de entidades é FILTER_SANITIZE_FULL_SPECIAL_CHARS, mas mesmo essa não é a que resolve o caso (ver alternativa D).
Alternativa C — ✅ Correta ⟵ GABARITO
FILTER_SANITIZE_SPECIAL_CHARS é a constante nativa do PHP que codifica caracteres especiais HTML (&, ", <, >), exatamente o que o problema pede: tornar <comando> em <comando>.
PHP Manual (documentação):FILTER_SANITIZE_SPECIAL_CHARS – "HTML-encode special characters (<, >, &, ") and replace any non-ASCII characters with their numeric HTML entities."
Alternativa D — ❌ Incorreta
FILTER_SANITIZE_FULL_SPECIAL_ENTITIESnão corresponde a nenhum filtro real do PHP. Existe FILTER_SANITIZE_FULL_SPECIAL_CHARS (sem "ENTITIES"), que faz codificação completa (incluindo todos os caracteres não ASCII), mas o nome exato da alternativa está errado e, ainda que fosse corrigido, o filtro pedido no contexto é o mais simples FILTER_SANITIZE_SPECIAL_CHARS.
Alternativa E — ❌ Incorreta
FILTER_SANITIZE_MAGIC_QUOTES aplica addslashes() (escapando aspas simples e duplas), não converte< ou > em entidades HTML. É um filtro obsoleto, usado para segurança em versões antigas do PHP, mas não atende ao requisito do enunciado.
NÃO CAIA NESSA!
A letra E remete ao conceito de magic quotes do PHP, que adicionava barras invertidas em aspas. O candidato pode confundir com a necessidade de escapar caracteres especiais, mas a finalidade é diferente: magic quotes não converte < em <. A banca explora a associação pelo nome ("magic") e pela função de sanitização, mas exige conhecimento específico do filtro correto.
PEGA ESSA DICA!
Memorize os principais filtros de sanitização do PHP: