SóProvas


ID
801256
Banca
CESPE / CEBRASPE
Órgão
MEC
Ano
2011
Provas
Disciplina
Banco de Dados
Assuntos

Julgue os itens subsequentes, relativos a ataques e vulnerabilidades.

Um ataque de SQL injection explora vulnerabilidades presentes em aplicações web, podendo ser evitado com inspeção criteriosa dos dados de entrada.

Alternativas
Comentários
  • CERTO

    é o que da a entender seu conceito: 
     SQL Injection: é uma técnica frequentemente utilizada para atacar um site. Isto é feito através da inclusão de porções de instruções SQL em uma teia,  forma campo de entrada em uma tentativa de obter o site para passar um recém-formado desonestos comando SQL para o banco de dados (por exemplo, despejar o conteúdo do banco de dados para o atacante). Injeção de SQL é uma injeção de código que explora uma técnica de vulnerabilidade de segurança no software de um site.
  • Um exemplo prático:

    Digamos que você crie uma página web (digamos, em ASP) para listar os dados de um usuário, a hospedando no seu servidor web no seguinte endereço:
    http://www.meuservidor.com/minhapagina.asp
    , e essa sua página receba como parâmetro o código do usuário, de forma que ela seja acionada da seguinte forma:
    http://www.meuservidor.com/minhapagina.asp?UserID=21

    O mais simples seria montar no código do lado do servidor uma query SQL, mais ou menos assim:
    "SELECT * FROM USUARIOS WHERE USERID =" + Request("UserID");

    Se o hacker quiser saber mais do que os dados do seu usuário, poderia chamar sua página com MAIS do que simplesmente o código:
    http://www.meuservidor.com/minhapagina.asp?UserID=21%20OR%20UserID<>21

    Dessa forma, TODAS as linhas de sua tabela seriam retornadas na página, pois o conteúdo que vem depois do código 21 seria concatenado à query sem o menor critério. Bem perigoso, não??

    Para evitar ataques de SQL Injection, existe mais de um método, e se recomenda usar o máximo possível.
    Uma boa medida é evitar sempre que possível a exposição de parâmetros na chamada ao endereço da página. No exemplo acima, evitando que o "?Userid=21" apareça no endereço do navegador. Para isto, deve-se evitar colocar valores nos links externos que apontem para a página, além de mudar o método de envio de seus formulários HTML, de GET para POST. Outra medida, que sempre que possível deve ser usada em conjunto com a anterior, é criticar todos os seus parâmetros de página, interrompendo sua execução se algo estiver errado. Se por exemplo o valor de "Request("UserID")" não for numérico, deve-se retornar um erro; Por fim, a forma (na minha humilde opinião) mais segura de se evitar o SQL Injection é transpor suas consultas para programas armazenados no servidor de Banco de Dados (em Functions ou Stored Procedures), pois nesse caso os parâmetros já terão tipos definidos e o próprio SGBD já retornará um erro em caso de tipos incorretos. Além disso, deve-se evitar também montar consultas SQL em strings grandes dentro da procedure, para garantir a correta execução da mesma logo na compilação de seu código SQL.
    Abraços e bons estudos a todos!
  • Wallace, francamente . não entendi seu comentário... você traduziu via sw?
  • CERTO.


    Segundo Navathe(2011,p.577),"São técnicas de proteção contra Injeção de SQL:

    -Variáveis de ligação(usando comandos parametrizados);

    -Filtragem da entrada(validação da entrada);

    -Segurança da função."


    SISTEMAS DE BANCO DE DADOS-6 EDIÇÃO 2011-NAVATHE.

  • Na minha opinião a questão é confusa pois não tenho como fazer uma inspeção criteriosa dos dados de entrada (considerando que não tenho controle sobre o que o atacante vai escrever), mas posso evitar que um código externo seja inserido. 

    A visão CESPE tbm passou pela minha cabeça, fiquei em dúvida.

  • Gabarito Certo

    SQL Injection é o nome dado a uma falha na codificação de uma aplicação qualquer (seja web ou local) que possibilita, por meio de um input qualquer, a manipulação de uma consulta SQL. Essa manipulação é chamada Injeção, então, o termo Injeção SQL.

    São técnicas de proteção contra Injeção de SQL:

    -Variáveis de ligação(usando comandos parametrizados);

    -Filtragem da entrada(validação da entrada);

    -Segurança da função.

     

     

     

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