Questão nº 51
Questão de Análise de Sistemas · CESGRANRIO BNDES 01/2024 (nº 51)
Um administrador de um servidor de redes, com sistema operacional Linux, está configurando as restrições de acesso de um servidor Apache HTTP.
Caso precise bloquear URLs que contenham a substring “/teste” ou “/pronto”, o administrador especificará essa restrição com a diretiva
- A
<Files ~ " /teste | /pronto $"> Order deny,allow </Files> - B`<LocationMatch "(teste|pronto)"> Order deny,allow deny from all </LocationMatch>` (alternativa correta)
- C`<Location /security> Match ("/teste") | ("/pronto") Order allow,deny </Location>`
- D
<Files ~ "/. teste | pronto $"> Match all Order deny,allow </Files> - E`<DirectoryMatch> Match ("/teste") | ("/pronto") Order deny,allow deny from all <DirectoryMatch>`
Resposta comentada
Gabarito Alternativa B
O conceito-chave é que, para bloquear URLs por padrão de texto (regex), o Apache usa <LocationMatch> (que casa com a URL) ou <FilesMatch> (que casa com o nome do arquivo). A diretiva <Location> casa com um caminho exato, não com substring, e <Files> casa só com o final do caminho (nome do arquivo). A pegadinha é que a banca mistura sintaxes de diretivas diferentes e usa regex inválida ou incompleta.
- (A) Incorreta:
<Files ~>casa com o nome do arquivo, não com a URL inteira; além disso, a regex" /teste | /pronto $"tem espaços e âncoras erradas, não casando com a substring em qualquer posição da URL. - (B) Correta:
<LocationMatch>aplica uma regex à URL completa;(teste|pronto)casa com qualquer URL que contenha "teste" ou "pronto" em qualquer posição, eOrder deny,allow+deny from allbloqueia todos, que é exatamente o que o enunciado pede. - (C) Incorreta:
<Location /security>casa com um caminho exato (ou prefixo), não com substring; além disso,Match ("/teste") | ("/pronto")não é sintaxe válida do Apache (não existe diretivaMatch). - (D) Incorreta:
<Files ~>casa com nome de arquivo, e a regex"/. teste | pronto $"tem um/.que casa com qualquer caractere antes de "teste", além de espaços e âncora$que limitam o casamento ao final do nome, não à URL. - (E) Incorreta:
<DirectoryMatch>casa com caminhos do sistema de arquivos (diretórios), não com URLs; e a sintaxeMatch ("/teste") | ("/pronto")é inválida, pois não existe diretivaMatchno Apache.
Armadilha do distrator mais tentador (A): A banca coloca <Files ~> com uma regex que parece plausível, mas o aluno que não sabe a diferença entre <Files> (nome do arquivo) e <Location> (URL) cai na pegadinha. Além disso, a regex com espaços e $ não casa com a substring em qualquer posição, mas sim com o final do nome do arquivo, o que não atende ao pedido de bloquear URLs que contenham "/teste" ou "/pronto".
Fonte: CESGRANRIO BNDES 01/2024 Analista - Análise de Sistemas (Suporte) (Caderno Prova 4). Reproduzida para fins de estudo.