SóProvas


ID
2624362
Banca
CESPE / CEBRASPE
Órgão
ABIN
Ano
2018
Provas
Disciplina
Banco de Dados
Assuntos

Considerando o acesso a um sítio de uma empresa, desenvolvido em arquitetura Web/PHP, julgue o item a seguir, a respeito de segurança de aplicações web.


Situação hipotética: Navegando-se pelo sítio, descobriu-se o test=Query por meio de um método GET na URL, a qual foi usada para pesquisar o banco de dados e suas colunas, utilizando-se a ferramenta SQLMap. Assertiva: Essa situação ilustra uma forma de se explorar a fragilidade do sítio por meio de SQL injection.

Alternativas
Comentários
  • Gabarito Certo

    Injeção de SQL, mais conhecida através do termo americano SQL Injection, é um tipo de ameaça de segurança que se aproveita de falhas em sistemas que interagem com bases de dadosvia SQL. A injeção de SQL ocorre quando o atacante consegue inserir uma série de instruções SQL dentro de uma consulta (query) através da manipulação das entradas de dados de uma aplicação.

    Para exemplificar o funcionamento da injeção de SQL, consideremos uma instrução SQL comum:

    SELECT id, nome, sobrenome FROM autores;

    Essa instrução, que representa uma consulta na base de dados, retorna todos os registros das colunas "id", "nome" e "sobrenome" da tabela "autores". A partir desta mesma instrução, os registros a serem retornados podem ser restritos através da inclusão da cláusula WHERE, como é visto no exemplo abaixo:

    SELECT id, nome, sobrenome FROM autores WHERE nome = 'josé' AND sobrenome = 'silva';

    Com base nesta instrução, é fácil supor que "josé" e "silva" são strings, cujo conteúdo será preenchido pela entrada feita por algum usuário que estiver fazendo uso da aplicação.

    Portanto, supondo que a aplicação não faça o tratamento apropriado do conteúdo inserido pelo usuário, o mesmo pode fazer o uso acidental do caractere apóstrofo. Gerando a entrada:

    nome = jo'sé

    sobrenome = silva

    E fazendo com que a aplicação gere o código:

    SELECT id, nome, sobrenome FROM autores WHERE nome = 'jo'sé' AND sobrenome = 'silva';

    De acordo com a especificação da linguagem SQL, existe um erro de sintaxe nessa instrução, uma vez que a string passada para o campo nome é a apenas palavra "jo", pois a adição de apóstrofo quebrou a delimitação dos apóstrofos originais da consulta. O interpretador do SQL espera que o restante da instrução seja outros comandos SQL válidos que complementem a instrução principal. No entanto, como "sé" não é um identificador válido, essa instrução não será executada e retornará um erro.

    Com base neste problema, um possível atacante pode manipular os dados de entrada a fim de gerar um comportamento não esperado na base de dados.

     

     

    "Retroceder Nunca Render-se Jamais !"
    Força e Fé !
    Fortuna Audaces Sequitur !

  • questão até fácil, mas muito mal redigida...