Pular para o conteúdo principal

Questão de Programação — Linguagens de programação — FCC 2019

ProgramaçãoLinguagens 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 &lt;comando&gt;, a lacuna I deverá ser preenchida corretamente por
  1. AFILTER_SANITIZE_MAGIC_CHARACTERS
  2. BFILTER_SANITIZE_FULL_ENTITY_CHARACTERS
  3. CFILTER_SANITIZE_SPECIAL_CHARS
  4. DFILTER_SANITIZE_FULL_SPECIAL_ENTITIES
  5. 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 &lt;). 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_CHARACTERS nã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_CHARACTERS nã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 &lt;comando&gt;.

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_ENTITIES nã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 &lt;. 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:

  • FILTER_SANITIZE_SPECIAL_CHARS: codifica <, >, &, " (proteção XSS).

  • FILTER_SANITIZE_FULL_SPECIAL_CHARS: codifica todos os caracteres especiais HTML.

  • FILTER_SANITIZE_STRING: remove tags (obsoleto).

  • FILTER_SANITIZE_ENCODED: URL-encode.

  • FILTER_SANITIZE_MAGIC_QUOTES: aplica addslashes() (não recomendado).

Gabarito: letra C.

Link permanente: /questoes/fc057835