ESTUDO DE TÉCNICAS DE PROTEÇÃO CONTRA INVASÕES POR SQL INJECTION FELIPE CALLORI

Tamanho: px
Começar a partir da página:

Download "ESTUDO DE TÉCNICAS DE PROTEÇÃO CONTRA INVASÕES POR SQL INJECTION FELIPE CALLORI"

Transcrição

1 UNIVERSIDADE FEDERAL DE MATO GROSSO COORDENAÇÃO DE ENSINO DE GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO ESTUDO DE TÉCNICAS DE PROTEÇÃO CONTRA INVASÕES POR SQL INJECTION FELIPE CALLORI CUIABÁ MT 2007

2 UNIVERSIDADE FEDERAL DE MATO GROSSO COORDENAÇÃO DE ENSINO DE GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO ESTUDO DE TÉCNICAS DE PROTEÇÃO CONTRA INVASÕES POR SQL INJECTION FELIPE CALLORI Orientador: Prof. MSc. JOSÉ DE PAULA NEVES NETO Monografia apresentada ao Curso de Ciência da Computação da Universidade Federal de Mato Grosso, para obtenção do Título de Bacharel em Ciência da Computação. CUIABÁ MT 2007

3 UNIVERSIDADE FEDERAL DE MATO GROSSO COORDENAÇÃO DE ENSINO DE GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO CERTIFICADO DE APROVAÇÃO Título: Estudo de técnicas de proteção contra invasões por SQL Injection Autor: Felipe Callori Aprovado em 19/03/2007 Prof. MSc. José de Paula Neves Neto UFMT/ICET/DCC (Orientador) Prof. Dra. Patricia Cristiane de Souza UFMT/ICET/DCC Prof. Dr. Josiel Maimone de Figueiredo UFMT/ICET/DCC

4 DEDICATÓRIA À minha querida mãe que sempre me apoiou e orientou em todas as minhas decisões. À memória de meu pai que fez de tudo para garantir meu futuro e de meus irmãos. À minha namorada pela sua atenção, carinho e apoio.

5 AGRADECIMENTOS Ao Prof. José de Paula Neves Neto pela dedicação com que me orientou neste trabalho de conclusão de curso de Ciência da computação.

6 SUMÁRIO LISTA DE CÓDIGOS... 8 LISTA DE FIGURAS LISTA DE MENSAGENS LISTA DE SIGLAS E ABREVIATURAS RESUMO INTRODUÇÃO APRESENTAÇÃO OBJETIVOS Objetivo Geral Objetivos Específicos JUSTIFICATIVA METODOLOGIA CRONOGRAMA PROPOSTO CRONOGRAMA EXECUTADO CONTEXTUALIZAÇÃO HTTP Método GET Método POST HTML Formulários PROTOCOLO CGI A LINGUAGEM SQL Comandos Básicos da linguagem SQL CODE INJECTION SQL INJECTION HISTÓRICO SOBRE SQL INJECTION O QUE É SQL INJECTION? FORMAS DE SQL INJECTION Manipulação de SQL SQL Injection baseado em erros Blind SQL Injection VULNERABILIDADES EM SISTEMAS ESPECÍFICOS VULNERABILIDADES EM SQL SERVER Ataques em nível de sistema VULNERABILIDADES EM MYSQL SELECT e UNION Função LOAD FILE Atrasos de Tempo e a Função BENCHMARK VULNERABILIDADES EM ORACLE Injeção de Código Injeção em chamadas de Função ANATOMIA DE UM ATAQUE O ATAQUE SUGESTÕES PREVENTIVAS PRÁTICAS DE PROTEÇÃO VALIDAÇÃO DE ENTRADAS DO USUÁRIO... 73

7 Validação com HTML e Javascript MENSAGENS DE ERRO CONFIGURAÇÕES NO BANCO DE DADOS EXPRESSÕES SQL PREPARADAS E STORED PROCEDURES CONCLUSÕES REFERÊNCIAS BIBLIOGRÁFICAS ANEXO A - SITE DO MINISTÉRIO DA JUSTIÇA FOI INVADIDO... 92

8 8 LISTA DE CÓDIGOS CÓDIGO 1 - ENVIO DE DADOS PELO MÉTODO GET CÓDIGO 2 - REPRESENTAÇÃO DE UM FORMULÁRIO HTML CÓDIGO 3 - SELECIONANDO A TABELA USUARIOS CÓDIGO 4 - ATUALIZANDO USUÁRIO CÓDIGO 5 - ESQUEMA DE CONSULTA CÓDIGO 6 - SQL INJETADA CÓDIGO 7 - COMENTANDO LINHAS CÓDIGO 8 - URL NORMAL CÓDIGO 9 - URL ATACADA CÓDIGO 10 - VARIÁVEL PROCESSO CÓDIGO 11 - APAGANDO PROCESSOS CÓDIGO 12 - EXEMPLO DE TIME DELAY CÓDIGO 13 - EXEMPLO DE BLIND INJECTION CÓDIGO 14 - ESQUEMA DA TABELA DE USUÁRIOS CÓDIGO 15 - CONSULTA POR USUÁRIO CÓDIGO 16 - VARIÁVEL CONSULTA CÓDIGO 17 - VISUALIZAR VERSÃO DO SQL SERVER CÓDIGO 18 - INJETANDO USUÁRIO NO BD CÓDIGO 19 - RECUPERANDO NOME DE USUÁRIO DA TABELA CÓDIGO 20 - ROUBANDO SENHA DE USUÁRIO CÓDIGO 21 - UTILIZAÇÃO DO COMANDO XP_CMDSHELL CÓDIGO 22 - VERIFICAÇÃO DE USUÁRIO NO BD CÓDIGO 23 - URL PARA CONSULTAR CÓDIGO CÓDIGO 24 - RETORNANDO VERSÃO DO MYSQL CÓDIGO 25 - RECUPERANDO DADOS DA TABELA FUNC CÓDIGO 26 - VENDO CONTEÚDO DO ARQUIVO CÓDIGO 27 - RECUPERANDO HASHES DAS SENHAS DE USUÁRIO CÓDIGO 28 - UTILIZANDO HEXADECIMAIS CÓDIGO 29 - FAZENDO REQUISIÇÕES COM HEXADECIMAIS CÓDIGO 30 - VISUALIZANDO OS PRIMEIROS 60 BYTES DO ARQUIVO BOOT.INI CÓDIGO 31 - RECUPERANDO OS PRÓXIMOS 60 BYTES DO ARQUIVO BOOT.INI CÓDIGO 32 - UTILIZAÇÃO DA FUNÇÃO BENCHMARK CÓDIGO 33 - EXEMPLO BENCHMARK CÓDIGO 34 - EXTRAINDO INFORMAÇÕES COM BENCHMARK CÓDIGO 35 - RECUPERANDO VALORES BIT A BIT CÓDIGO 36 - TIPO COMUM DE ATAQUE CÓDIGO 37 - BLOCO PL/SQL CÓDIGO 38 - BLOCO PL/SQL MODIFICADO CÓDIGO 39 - EXEMPLO DE EXPRESSÃO SQL CÓDIGO 40 - EXPRESSÃO SQL MANIPULADA CÓDIGO 41 - CRIANDO NOVOS USUÁRIOS CÓDIGO 42 - DESCOBRINDO O SEGUNDO USUÁRIO DA APLICAÇÃO CÓDIGO 43 - USANDO A CLÁUSULA UNION NO ATAQUE CÓDIGO 44 - DESCOBRINDO O NÚMERO DE CAMPOS DA CONSULTA CÓDIGO 45 - NÚMERO CORRETO DE CAMPOS DA CONSULTA CÓDIGO 46 - URL DE ÁREA ADMINISTRATIVA CÓDIGO 47 - DESCOBRINDO O VALOR DO CAMPO USERNAME CÓDIGO 48 - DESCOBRINDO A SENHA DO ADMINISTRADOR CÓDIGO 49 NOME DE USUÁRIO CÓDIGO 50 LITERAL RESULTANTE CÓDIGO 51 SENHA MALICIOSA CÓDIGO 52 PESQUISA FORMADA PELA APLICAÇÃO CÓDIGO 53 BURLANDO O COMANDO SELECT... 75

9 CÓDIGO 54 CONSULTA INSEGURA CÓDIGO 55 CONSULTA SEGURA

10 10 LISTA DE FIGURAS FIGURA 1 - ESQUEMA DO CGI (ADAPTADO DE BÔAS ET AL, 2001) FIGURA 2 - CICLO DE VIDA DE UM CGI (BÔAS ET AL, 2001) FIGURA 3 - ESQUEMA DA INJEÇÃO DE SQL (ADAPTADO DE JAVAFREE.ORG, 2003) FIGURA 4 - ENCONTRANDO CAMPO VULNERÁVEL FIGURA 5 - ERRO DE SINTAXE SQL FIGURA 6 - TENTATIVA DE ENTRAR NO SISTEMA FIGURA 7 - MENSAGEM DE ERRO NA TENTATIVA DE LOGAR FIGURA 8 - NOVA TENTATIVA DE ENTRAR NO SISTEMA FIGURA 9 - SUCESSO EM ENTRAR NO SISTEMA FIGURA 10 - SEGUNDO USUÁRIO DA APLICAÇÃO FIGURA 11 - ERRO DE TABELA NÃO EXISTENTE FIGURA 12 - ERRO NO NÚMERO DE CAMPOS DA CLÁUSULA UNION FIGURA 13 - LOGADO NO SISTEMA UTILIZANDO UNION FIGURA 14 - ÁREA ADMINISTRATIVA DO SITE FIGURA 15 - USERNAME DO ADMINISTRADOR FIGURA 16 - SENHA DO ADMINISTRADOR FIGURA 17 - TENTATIVA DE ENTRAR NA ÁREA ADMINISTRATIVA FIGURA 18 - PAINEL DA ÁREA ADMINISTRATIVA FIGURA 19 - TESTE DE VULNERABILIDADE FIGURA 20 - MENSAGEM DE ERRO COM EXCESSO DE INFORMAÇÕES... 78

11 11 LISTA DE MENSAGENS MENSAGEM 1 - ERRO DE SINTAXE GERADO NA APLICAÇÃO MENSAGEM 2 - VERSÃO DO SQL SERVER MENSAGEM 3 - REVELANDO NOME DA TABELA MENSAGEM 4 - REVELANDO PRÓXIMO NOME DA TABELA MENSAGEM 5 - REVELANDO SENHA DO ADMIN MENSAGEM 6 - ERRO GERADO PELA CLÁUSULA UNION... 49

12 12 LISTA DE SIGLAS E ABREVIATURAS API ASP ATH BD CGI Application Program Interface Interface de aplicação de programas Active Server Page Páginas de Servidor Ativo Against The Hell Contra o Inferno Banco de Dados Common Gateway Interface Interface de porta de comunicação comum DB2 Database2 Gerenciador de Banco de dados (Base de dados 2) DBA DENATRAN DOS GHZ HTML HTML HTTP IDC IIS MJ NT ODBC PHP PL/SQL DataBase Administrator Administrador da Base de Dados Departamento Nacional de Trânsito Denial Of Service Negação de Serviço Gigahertz Hypertext Markup Language Linguagem de Marcação de Hipertexto HyperText Markup Language Linguagem de marcação de Hipertexto HyperText Transfer Protocol Protocolo de Transferência de Hipertexto Integrated Database Connector - Conector de Base de Dados Integradas Internet Information Service Serviço de Informação da Internet Ministério da Justiça New Technology Nova Tecnologia Open Data Base Conectivity Conectividade de Banco de Dados Aberto Hypertext PreProcessor Pré-processador de Hipertexto Procedural Language/SQL Linguagem Procedural/SQL

13 13 PT SQL URL VBA WWW Partido dos Trabalhadores Structured Query Language Linguagem de Consulta Estruturada Universal Resource Locator Localizador de Códigos Universal Visual Basic Application Aplicação de Visual Basic World Wide Web Teia do tamanho do mundo

14 14 RESUMO A técnica de invasão por SQL Injection atualmente é a forma de ataque mais realizada contra servidores de banco de dados (BD) na Internet. Pelo menos um site entre três consultados durante a pesquisa, que se conectam a uma base de dados, apresentaram vulnerabilidades a esta forma de ataque. Essa técnica se aproveita de falhas de programação presentes em scripts que realizam conexão com um BD. Essas falhas permitem que comandos SQL sejam enviados por usuários maliciosos através de formulários HTML ou URLs e sejam executados diretamente no BD. A grande maioria dos gerenciadores de banco de dados possui vulnerabilidades que podem ser aproveitadas por invasores. Como exemplos, podem ser citados o SQL Server e o Oracle, que possuem centenas de funções e stored procedures nativos que vêm habilitados por default e constituem ferramentas extremamente úteis a ataques de injeção de SQL. Este trabalho realiza um levantamento sobre as características de ataques por SQL Injection, assim como são demonstradas algumas das principais vulnerabilidades a esse tipo de ataque, presentes em três dos principais gerenciadores de banco de dados do mercado (SQL Server, MySQL e Oracle) e propõe os melhores procedimentos a serem realizados para barrar ataques desta natureza. Palavras-chave: SQL Injection, invasão, vulnerabilidade, segurança, proteção.

15 15 1. INTRODUÇÃO 1.1 Apresentação A revolução da Internet (rede mundial de computadores) nos anos 90, conseqüência do grande desenvolvimento tecnológico promovido pela Guerra Fria (guerra psicológica entre Estados Unidos e a União soviética) e a popularização dos microcomputadores, interconectou praticamente todas as redes de computadores sobre a terra. A possibilidade de conexão com o mundo todo tornou a Internet um forte meio de comunicação e informação utilizado por milhões de pessoas. A rede mundial de computadores passou a ser parte do dia-a-dia dessas pessoas e a ser utilizada para realizar muitas tarefas importantes, dentre elas: divulgação e venda de produtos e serviços, armazenar dados importantes para acesso rápido de qualquer localização, realizar muitos tipos de transações bancárias, dentre outros fatores. O grande fluxo de informação presente na Internet, principalmente informações essenciais, a exemplo de informações sigilosas de grandes empresas e dados de contas bancárias, despertou o interesse de criminosos que passaram a estudar falhas na implementação de páginas virtuais e a desenvolver técnicas para a invasão das mesmas. A ação desses criminosos gerou uma grande preocupação para os administradores em relação à segurança de seus sites, e tornou obrigatório o conhecimento das técnicas de invasão de sites para implementação da proteção contra as mesmas. Uma das técnicas mais utilizadas para a invasão de páginas virtuais é denominada Structured Query Language (SQL) Injection ou Injeção de SQL, um problema que afeta praticamente todas as linguagens de programação que contenham uma requisição a um banco de dados (BD) na Internet. A técnica SQL injection é uma variante do método de invasão chamado Injeção de Código (Code Injection), que consiste no preenchimento de código malicioso em campos de formulários HTML (tais como campos de login, pesquisa, senha, dentre outros) para forçar acesso a um banco de dados, ter acesso a informações restritas ou até mesmo destruir informações de um servidor web. A Injeção de SQL é aplicada em sites que contenham requisições a um banco de dados e, utilizando a estrutura da linguagem de banco de dados SQL, se aproveita de falhas na implementação da requisição ao banco de dados.

16 16 Apesar de ser uma das técnicas de invasão mais utilizadas, ainda é muito comum encontrar páginas no Brasil que apresentem vulnerabilidades à Injeção de SQL. Um dos principais motivos desse grande número de páginas vulneráveis é a falta de abordagem e até preguiça de programadores em construir procedimentos de segurança nessas páginas para a validação de dados que fazem a requisição de um banco de dados. A técnica SQL Injection é difícil de ser erradicada, pois não é uma falha ao nível de software e sim uma falha ao nível da capacidade de programar. 1.2 Objetivos Objetivo Geral O objetivo deste trabalho é justificar porque a técnica de injeção de SQL funciona e fornecer procedimentos para auxiliar administradores de sistemas para web a implementar sistemas seguros contra essa vulnerabilidade Objetivos Específicos Os seguintes passos foram seguidos para a realização desse trabalho: a) Descrever e analisar os principais tipos de ataques realizados por SQL Injection a páginas da Internet; b) Mostrar algumas das principais vulnerabilidades em gerenciadores de banco de dados aproveitadas pelos invasores que utilizam essa técnica; c) Realizar testes práticos em sites a procura de vulnerabilidades; d) Propor quais os melhores procedimentos para proteger um site de ataques por SQL Injection. 1.3 Justificativa Esse tema foi escolhido pela atualidade do mesmo, a falta de abordagem existente no Brasil em relação a esse assunto e ao descaso de muitos programadores com a segurança de seus sites. É muito importante alertar e educar o programador em relação à segurança de suas aplicações na web contra ataques de criminosos. A Injeção de Código SQL é muito fácil de ser aplicada e é uma das técnicas mais exploradas na

17 17 invasão de sites e, através dessa técnica um invasor pode, por exemplo, ter acesso a áreas restritas de um site, obter privilégios de administrador, destruir informações importantes, dentre outros fatores agravantes. O desenvolvimento de sistemas para web relacionados a um banco de dados e a preocupação com a segurança e integridade desses sistemas também foram pontos influentes na escolha do tema. 1.4 Metodologia O trabalho foi desenvolvido a partir do método de pesquisa bibliográfica e através de método indutivo, utilizando levantamento de dados feitos em testes práticos realizados em sites. Os testes práticos consistiram em detectar sites vulneráveis à SQL Injection e, ao final, demonstrar na prática como seria a anatomia de um ataque realizado em um site vulnerável. Posteriormente foram propostas soluções de proteção para o mesmo. Foram utilizados no trabalho códigos SQL padrão, a estrutura de vários gerenciadores de banco de dados como MySQL, SQL Server e Oracle e a estrutura de algumas linguagens de programação como PHP, ASP e Java. 1.5 Cronograma Proposto Etapa 1 - Pesquisa bibliográfica Consiste da leitura de livros e pesquisa na Internet sobre o tema. Etapa 2 - Conceitos e ataques Descrição da técnica SQL Injection, suas formas de ataque e como são realizados os ataques.

18 18 Etapa 3 - Defesa do Projeto Etapa 4 - Vulnerabilidades Demonstrar algumas das principais vulnerabilidades aproveitadas por invasores em três dos principais gerenciadores de banco de dados do mercado. Etapa 5 - Testes Práticos Detectar sites vulneráveis à SQL Injection e demonstrar a anatomia de um ataque. Etapa 6 Métodos para Proteção Propor métodos para a proteção de sites contra a técnica de Injeção de SQL. Etapa 7 Apresentação à banca avaliadora. 1.6 Cronograma executado O cronograma executado foi muito semelhante ao cronograma proposto no projeto de monografia. A única etapa em que houve uma mudança significativa foi a primeira, pois a pesquisa bibliográfica foi utilizada durante praticamente toda a construção do trabalho final.

19 19 2. CONTEXTUALIZAÇÃO Esta seção demonstra alguns dos principais pré-requisitos necessários para o entendimento de como funciona a técnica de invasão SQL Injection. São demonstrados o protocolo HTTP e seus principais métodos de envio (GET e POST), a linguagem HTML e seus formulários, o protocolo CGI, a linguagem SQL e finalmente a técnica de invasão que deu origem a SQL Injection, a técnica denominada code injection. 2.1 HTTP Hypertext Transfer Protocol (HTTP) ou Protocolo de Transferência de Hipertexto é o protocolo responsável pela interação entre o usuário (cliente) e o servidor World Wide Web (WWW). O HTTP é a linguagem comum da Internet global moderna (GOURLEY et al, 2002). A forma mais comum de utilização do protocolo HTTP consiste na requisição de páginas de informação de um servidor pelo usuário. Estas páginas de informação utilizam a codificação HTML (Seção 2.2) e são recuperadas através de Unified Resource Locators (URLs), que são endereços que podem identificar qualquer fonte (páginas em HTML, arquivos para download, computadores, servidores web, dentre outros) localizada na Internet. Segundo Bôas et al (2001) ao ser solicitada a página pelo cliente o navegador envia uma solicitação para o servidor web que, quando recebe uma requisição, procura pela página solicitada e, caso a encontre, envia uma mensagem de confirmação e a página é visualizada no computador cliente. Porém, segundo Kou & Springstell (1997) o servidor web é somente um provedor de informações estáticas, sendo assim para obter suporte a informações dinâmicas é necessário a utilização de outro protocolo, denominado Common Gateway Interface (CGI) que será abordado na Seção Método GET O método GET é um dos principais métodos de envio de dados pertencentes ao protocolo HTTP. Este método é acionado por meio de um formulário HTML através da diretiva method=get incluída na tag <form>. Segundo Kennedy & Musciano (2002) o

20 20 método GET permite entrar em contato com o servidor que irá processar os dados do formulário anexando os dados à diretiva action do formulário, separados por um ponto de interrogação (?). Esta forma de separação pode ser visualizada no campo de endereços do navegador do usuário logo após o formulário ter sido enviado. No Código 1 é possível observar um exemplo de envio de dados utilizando o método GET. Todo o texto localizado antes do sinal de interrogação (?) indica o endereço da aplicação que irá receber e processar os dados enviados pelo formulário. Após o sinal estão anexados os dados enviados pelo formulário, no Código 1 estão sendo enviados o nome e senha de um usuário qualquer à aplicação destino. Código 1 - Envio de dados pelo método GET O método GET é um dos métodos pertencentes ao protocolo HTTP mais utilizados. Seu uso é indicado quando são necessárias transmissões mais velozes, quando não existe necessidade em manter sigilo dos dados enviados e quando os campos a serem enviados pelo formulário possuírem um número reduzido de informações (o método GET possui tamanho limitado a 255 caracteres). Para uma melhor performance na transmissão de um formulário, envie pequenos formulários com poucos e pequenos campos através do método GET (KENNEDY & MUSCIANO, 2002) Método POST Método de envio pertencente ao protocolo HTTP, destinado ao envio de grande número de informações. O método POST difere do método GET, pois, ao invés de enviar os dados pela URL, envia os dados em um bloco de informações anexados ao corpo da mensagem. Neste bloco geralmente são dadas informações como cabeçalhos extras para descrever o corpo da mensagem, como Content-Type (tipo de dado a que o conteúdo pertence) e Content-Length (tamanho do conteúdo). O uso mais comum do método POST consiste em enviar dados através de formulários HTML para scripts ou programas CGI.

21 21 Para Kennedy & Musciano (2002) se o assunto é segurança, é melhor escolher POST, pois o método GET insere os parâmetros diretamente em uma URL, local onde podem ser facilmente visualizados e capturados. Aplicações POST também possuem falhas de segurança, mas pelo menos podem contar com a encriptação de seus dados enquanto os mesmos são transmitidos ao servidor. 2.2 HTML Hipertext Markup Language ou Linguagem de Marcação de Hipertexto, a linguagem HTML consiste em uma linguagem de formatação, ou seja, descreve como será a formatação de um documento. Por esse motivo não é possível programar em HTML, pois a mesma só oferece opções para formatar textos, inserir imagens, dentre outras funções. HTML é a linguagem de codificação utilizada para construir a interface de páginas que serão exibidas na web. Segundo BÔAS et al (2001) a linguagem HTML torna possível à construção de uma interface que será visualizada através do navegador. Através da linguagem HTML é possível construir ambientes amigáveis ao usuário para que este interaja com a rede mundial. Para BÔAS et al (2001) a maior importância da linguagem HTML para programas em CGI está em ser usada como uma forma de coletar e apresentar informações ao usuário e interagir com ele. A linguagem HTML possui várias ferramentas, dentre elas os formulários. Os formulários (Seção 2.2.1) são responsáveis pela integração da linguagem HTML à programação CGI Formulários Os formulários, como ferramentas da linguagem HTML, oferecem um modelo para a entrada de dados. Os formulários são responsáveis pelo envio dos dados do usuário ao servidor web. Segundo BÔAS et al (2001) a interface de uma aplicação web é feita com HTML, no entanto existem dois sentidos para a interface, um que fornece informações e outro que obtêm dados dele. As informações são fornecidas ao usuário através dos elementos de formatação básicos da linguagem HTML, mas para atender

22 22 completamente a estrutura de uma interface de aplicação web sugerida por Bôas et al (2001) é necessária a utilização de formulários HTML. Os formulários possuem vários tipos de campos que recebem entradas do usuário para posterior envio ao servidor web. O corpo de um formulário HTML é representado no Código 2. <FORM ACTION= aplicação destino METHOD= método de envio >.. campos para preenchimento (áreas de texto, campos de. múltipla escolha, dentre outros). </FORM> Código 2 - Representação de um formulário HTML As tags (comandos) <form>...</form> representam um formulário, entre elas são inseridos os campos de preenchimento. Existem vários campos definidos pela linguagem HTML. Dentro da tag <form> são definidas informações importantes sobre os dados a serem enviados para que o programa CGI redirecione a aplicação desejada. O campo action indica o endereço (URL) da aplicação que irá receber e processar as informações enviadas (geralmente o arquivo CGI que irá processar as informações para a aplicação final) e o campo method indica o método pelo qual o navegador irá enviar os dados do usuário ao servidor para serem processados. Para este campo são utilizados os dois principais métodos de envio pertencentes ao protocolo HTTP: GET e POST. 2.3 Protocolo CGI CGI é uma tecnologia que permite a criação de páginas dinâmicas, ou seja, capazes de fornecer respostas personalizadas de acordo com alguma informação fornecida pelo usuário (BÔAS et al, 2001). O protocolo CGI permite a servidores web solicitarem recursos e aplicações externas. Segundo Kou & Springstell (1997) o protocolo CGI é uma ponte entre o servidor HTTP, o banco de dados e qualquer outra fonte de informação. O protocolo CGI recebe todas as informações coletadas de formulários de páginas em HTML e pertencentes ao servidor através dos métodos de envio do protocolo HTTP (GET e POST). As informações são redirecionadas para a aplicação

23 23 desejada (a exemplo de um banco de dados) e ao receber a resposta o programa CGI remete a mesma ao cliente geralmente em uma página codificada em HTML, segundo o esquema ilustrado na Figura 1. Segundo Bôas et al (2001) aplicações CGI podem ser usadas para tudo o que gera conteúdo dinâmico na web a exemplo de fóruns, livros de visita, formulários de compra, consulta de estoque, home banking e investimentos na bolsa de valores. Figura 1 - Esquema do CGI (adaptado de BÔAS et al, 2001) O protocolo CGI consiste num conjunto de programas que tornam possível a comunicação do servidor HTTP com outras aplicações, programas estes chamados de programas CGI. [...] um programa CGI sempre é executado no servidor web (BÔAS et al, 2001). Um programa CGI possui um ciclo de vida (Figura 2), que começa quando um servidor recebe uma requisição que acessa um programa CGI. O servidor então cria um processo com o programa CGI e passa a ele todas as informações recebidas do cliente. Quando o programa CGI termina o processamento da resposta, seu processo é encerrado e o resultado encaminhado ao navegador do usuário que fez a requisição.

24 24 Figura 2 - Ciclo de vida de um CGI (BÔAS et al, 2001) 2.4 A Linguagem SQL Structured Query Language (SQL), ou Linguagem de Consulta Estruturada, é uma linguagem de pesquisa declarativa para bancos de dados relacionais (bases de dados relacionais). Segundo Taylor (2003, p.21) a primeira coisa necessária para se entender sobre a linguagem SQL é que ela não é uma linguagem procedural a exemplo de linguagens como C, Pascal, FORTRAN, dentre outras. SQL não é procedural porque processa conjuntos de registros, ao invés de um por vez, permitindo ao usuário manipular tipos complexos de dados. SQL é utilizada para recuperar informações de um banco de dados através de consultas ou seleções que informam quais os dados pretendidos. A SQL é uma linguagem industrial padronizada (TAYLOR, 2003, p.7) especialmente desenvolvida para permitir que pessoas criem novas bases de dados, adicionem novos dados, façam a manutenção e recuperem informações em seus bancos de dados. Os principais sistemas da web que trabalham em conjunto com um banco de dados relacional utilizam gerenciadores de banco de dados que utilizam a sintaxe da

25 25 linguagem SQL. A linguagem SQL é a ferramenta mais utilizada para a comunicação com uma base de dados relacional (TAYLOR, 2003, p.21). Esta linguagem pode ser utilizada para todas as atividades relativas a um banco de dados podendo ser utilizada pelo administrador de sistemas web, pelo DataBase Administrator (DBA), por programadores, por sistemas de suporte à tomada de decisões e por outros usuários finais. A linguagem SQL é uma linguagem com um propósito especial desenvolvida para a criação e manutenção de dados de uma base de dados relacional. Embora os desenvolvedores de sistemas para manutenção de bases relacionais têm suas próprias definições de SQL, um padrão ISO/ANSI (revisado em 2003) define e controla o que é SQL (TAYLOR, 2003, p.45). Quem pretende utilizar os principais bancos de dados do mercado, como Oracle, Microsoft SQL Server, Sybase, DB/2, MySQL, PostgreSQL, entre outros, deve conhecer a linguagem SQL Comandos Básicos da linguagem SQL Como seu nome indica, a SQL é uma linguagem de acesso estruturado. Apesar das diferenças existentes entre suas implementações particulares (SQL Server, Oracle, MySQL, PostgreSQL, dentre outros), existe um grupo comum de comandos a todas elas (TAYLOR, 2003, p.45). De acordo com Racciatti (2002) para se entender como funciona um ataque por SQL Injection, é necessário ter o conhecimento de pelo menos alguns comandos básicos da linguagem SQL Padrão (Tabela 1) e suas respectivas cláusulas (Tabela 2), que são condições de seleção utilizadas para definir os dados que se deseja manipular.

26 26 Tabela 1 - Comandos básicos da linguagem SQL Comando ALTER CREATE DELETE DROP INSERT SELECT UPDATE Definição Utilizado para alterar tabelas agregando campos e trocar a definição de campos. Utilizado para criar novas tabelas, campos e índices. Utilizado para apagar registros de uma tabela da base de dados. Empregado para eliminar tabelas e índices. Utilizado para inserir dados em uma tabela. Utilizado para consultar registros de uma base de dados que satisfaçam um determinado critério. Utilizado para modificar os valores dos campos e registros especificados. Tabela 2 - Cláusulas da linguagem SQL no comando SELECT Cláusula FROM WHERE GROUP BY HAVING ORDER BY UNION Definição Utilizado para especificar a tabela a qual serão selecionados os objetos. Utilizado para especificar as condições que devem reunir os registros que serão selecionados. Utilizado para separar os registros escolhidos em grupos específicos. Utilizado para especificar a condição que deve satisfazer cada grupo. Utilizado para selecionar os registros selecionados de acordo com uma ordem específica. Utilizado para unir o resultado de duas consultas em um só resultado, este comando gera a união de conjuntos. Além dos comandos e cláusulas, são necessários operadores (Tabela 3) para realizar operações matemáticas, comparações e expressões booleanas.

27 27 Tabela 3 - Operadores da linguagem SQL Operador Nome > Maior que < Menor que <> Diferente de >= Maior ou igual a <= Menor ou igual a = Igual a AND Operador booleano para testar se mais de uma condição é verdadeira ou falsa OR Operador booleano para testar se pelo menos uma das condições é verdadeira ou falsa. BETWEEN Utilizado para especificar um intervalo de valores. LIKE Utilizado na comparação de um modelo. IN Utilizado para especificar registros de uma base de dados. Exemplos de consultas realizadas na linguagem SQL podem ser vistas nos Códigos 3 e 4. SELECT *FROM usuarios; Código 3 - Selecionando a tabela usuarios UPDATE usuarios SET password = WHERE user = admin ; Código 4 - Atualizando usuário A consulta presente no Código 3 devolve como resposta um conjunto com todos os registros da tabela usuarios e a consulta do Código 4 altera o campo password do usuário admin, para o valor especificado. Segundo Racciatti (2002) a seqüência de comandos da linguagem SQL é realizada em partes, sendo possível comparar sua execução a um arquivo em lotes, no qual suas instruções são executadas sequencialmente, para realizar a operação requerida. 2.5 Code Injection Code Injection ou Injeção de Código é o nome dado à técnica utilizada para introduzir (ou injetar) código em um programa de computador ou um sistema web, se aproveitando de falhas de segurança e vulnerabilidades dos mesmos.

28 28 Vulnerabilidades à injeção de código são falhas de programação que permitem a um invasor alterar a semântica de uma expressão em uma aplicação provendo entradas com conteúdo sintático (PIETRASZEK & BERGHE, 2005). De acordo com Milenkovic et al (2005), um dos maiores problemas de segurança é a execução de códigos maliciosos injetados. Através dessa técnica, criminosos virtuais podem obter o controle total de domínios da web, ter acesso a dados restritos e dentre outras possibilidades destruir dados. Os principais problemas gerados por essa técnica são conseqüência de situações adversas ou errôneas causadas nos sistemas atacados. O propósito do uso da injeção de código consiste em burlar ou modificar a intenção original da funcionalidade do programa, gerar situações anômalas e obter respostas inesperadas da aplicação atacada. Na maioria dos casos, o propósito do invasor em conduzir um ataque por injeção de código contra uma aplicação web é causar imediatamente uma resposta de um host [...] (OLLMANN, 2004). A injeção de código pode ser classificada em duas categorias, a de uso intencional e a de uso não intencional: O uso intencional pode ser maligno ou benigno. O uso maligno é o mais comum, as técnicas de injeção de código são populares em invasões de sistemas para obter (roubar) informações, privilégios de administrador ou acessos não autorizados. O uso benigno da injeção de código consiste na utilização dessa técnica para testar o comportamento de um programa e descobrir suas falhas e vulnerabilidades para posterior correção das mesmas. O uso não intencional de code injection acontece quando usuários finais causam situações adversas em um programa sem intenção. Por exemplo, o que um usuário pode considerar como caracteres válidos, podem ter sido considerados pelo programador do sistema como caracteres especiais. Ao assumir esses caracteres como normais na execução do sistema, o usuário pode gerar situações imprevistas, tendo como conseqüências um acesso indevido, um erro fatal de sistema, dentre outros fatores. Existem vários tipos de injeção de código utilizados por hackers principalmente para invasão de aplicações da Internet, a exemplo de SQL Injection, PHP Injection, ASP Injection, Javascript Injection, dentre outros.

Boas Práticas de Desenvolvimento Seguro

Boas Práticas de Desenvolvimento Seguro Boas Práticas de Desenvolvimento Seguro Julho / 2.012 Histórico de Revisões Data Versão Descrição Autor 29/07/2012 1.0 Versão inicial Ricardo Kiyoshi Página 2 de 11 Conteúdo 1. SEGURANÇA DA INFORMAÇÃO

Leia mais

Fonte: http://www.online-security-solution.com/ - Illustration by Gaich Muramatsu

Fonte: http://www.online-security-solution.com/ - Illustration by Gaich Muramatsu Fonte: http://www.online-security-solution.com/ - Illustration by Gaich Muramatsu Prof. Hederson Velasco Ramos Uma boa maneira de analisar ameaças no nível dos aplicativo é organiza las por categoria de

Leia mais

Tolerância a Falhas em sistemas distribuídos (programação)

Tolerância a Falhas em sistemas distribuídos (programação) Tolerância a Falhas em sistemas distribuídos (programação) Arthur Zavattieri Cano Lopes Curso de Redes e Segurança de Sistemas Pontifícia Universidade Católica do Paraná Curitiba, Maio de 2009. Resumo

Leia mais

Ameaças, riscos e vulnerabilidades Cont. Objetivos

Ameaças, riscos e vulnerabilidades Cont. Objetivos Ameaças, riscos e vulnerabilidades Cont. Prof. Esp. Anderson Maia E-mail: tecnologo.maia@gmail.com Objetivos entender a definição dos termos hacker, cracker e engenharia social; compreender a anatomia

Leia mais

Faça um Site PHP 5.2 com MySQL 5.0 Comércio Eletrônico

Faça um Site PHP 5.2 com MySQL 5.0 Comércio Eletrônico Editora Carlos A. J. Oliviero Faça um Site PHP 5.2 com MySQL 5.0 Comércio Eletrônico Orientado por Projeto 1a Edição 2 Reimpressão São Paulo 2011 Érica Ltda. Noções Livrarse Preparação muitas muita Sumário

Leia mais

Desenvolvendo para WEB

Desenvolvendo para WEB Nível - Básico Desenvolvendo para WEB Por: Evandro Silva Neste nosso primeiro artigo vamos revisar alguns conceitos que envolvem a programação de aplicativos WEB. A ideia aqui é explicarmos a arquitetura

Leia mais

Programação WEB Introdução

Programação WEB Introdução Programação WEB Introdução Rafael Vieira Coelho IFRS Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Sul Campus Farroupilha rafael.coelho@farroupilha.ifrs.edu.br Roteiro 1) Conceitos

Leia mais

World Wide Web e Aplicações

World Wide Web e Aplicações World Wide Web e Aplicações Módulo H O que é a WWW Permite a criação, manipulação e recuperação de informações Padrão de fato para navegação, publicação de informações e execução de transações na Internet

Leia mais

Programando em PHP. Conceitos Básicos

Programando em PHP. Conceitos Básicos Programando em PHP www.guilhermepontes.eti.br lgapontes@gmail.com Conceitos Básicos Todo o escopo deste estudo estará voltado para a criação de sites com o uso dos diversos recursos de programação web

Leia mais

Desenvolvimento e disponibilização de Conteúdos para a Internet

Desenvolvimento e disponibilização de Conteúdos para a Internet Desenvolvimento e disponibilização de Conteúdos para a Internet Por Matheus Orion Principais tecnologias front-end HTML CSS JAVASCRIPT AJAX JQUERY FLASH JAVA APPLET Linguagens que executam no cliente HTML

Leia mais

Aula 03 - Projeto Java Web

Aula 03 - Projeto Java Web Aula 03 - Projeto Java Web Para criação de um projeto java web, vá em File/New. Escolha o projeto: Em seguida, na caixa Categorias selecione Java Web. Feito isso, na caixa à direita selecione Aplicação

Leia mais

AULA APLICAÇÕES PARA WEB SESSÕES E LOGIN E SENHA

AULA APLICAÇÕES PARA WEB SESSÕES E LOGIN E SENHA Sumário Construção de sistema Administrativo... 1 Sistema de Login... 2 SQL INJECTION... 2 Técnicas para Evitar Ataques... 2 Formulário de Login e Senha fará parte do DEFAULT... 5 LOGAR... 5 boas... 6

Leia mais

WWW - World Wide Web

WWW - World Wide Web WWW World Wide Web WWW Cap. 9.1 WWW - World Wide Web Idéia básica do WWW: Estratégia de acesso a uma teia (WEB) de documentos referenciados (linked) em computadores na Internet (ou Rede TCP/IP privada)

Leia mais

Segurança em Banco de Dados

Segurança em Banco de Dados Centro de Educação Superior de Brasília Instituto de Educação Superior de Brasília Pós-Graduação em Banco de Dados Segurança em Banco de Dados Cláudio Reis Ferreira Galvão José Augusto Campos Versiani

Leia mais

1 SQL Injection A consulta normal SQL seria:

1 SQL Injection A consulta normal SQL seria: HTTP Testando aplicação Web. Pegaremos dois tipos de ataques dentre os top 10 do OWASP 1 SQL Injection A consulta normal SQL seria: SELECT * FROM Users WHERE Username='$username' AND Password='$password'

Leia mais

Desenvolvimento de Aplicações Web

Desenvolvimento de Aplicações Web Desenvolvimento de Aplicações Web André Tavares da Silva andre.silva@udesc.br Método de Avaliação Serão realizadas duas provas teóricas e dois trabalhos práticos. MF = 0,1*E + 0,2*P 1 + 0,2*T 1 + 0,2*P

Leia mais

Top Ten OWASP. Fausto Levandoski 1. Curso Tecnólogo em Segurança da Informação Av. Unisinos, 950 93.022-000 São Leopoldo RS Brasil. farole@gmail.

Top Ten OWASP. Fausto Levandoski 1. Curso Tecnólogo em Segurança da Informação Av. Unisinos, 950 93.022-000 São Leopoldo RS Brasil. farole@gmail. Top Ten OWASP Fausto Levandoski 1 1 Universidade do Vale do Rios dos Sinos (UNISINOS) Curso Tecnólogo em Segurança da Informação Av. Unisinos, 950 93.022-000 São Leopoldo RS Brasil farole@gmail.com Abstract.

Leia mais

As doze maiores ameaças do mercado intermediário: evitando ataques maliciosos comuns em nível de aplicativo.

As doze maiores ameaças do mercado intermediário: evitando ataques maliciosos comuns em nível de aplicativo. Gerenciamento de segurança on-line White paper Dezembro de 2007 As doze maiores ameaças do mercado intermediário: evitando ataques maliciosos comuns Página 2 Conteúdo 2 Introdução 3 Compreendendo ataques

Leia mais

Recomendações de Segurança para Desenvolvimento de Aplicações Web

Recomendações de Segurança para Desenvolvimento de Aplicações Web Recomendações de Segurança para Desenvolvimento de Aplicações Web Índice 1. INTRODUÇÃO...3 1.1 CONTROLE DE VERSÃO...3 1.2 OBJETIVO...3 1.3 PÚBLICO - ALVO...4 2 VULNERABILIDADES COMUNS...4 2.1 INJEÇÃO DE

Leia mais

SQL Structured Query Language

SQL Structured Query Language Janai Maciel SQL Structured Query Language (Banco de Dados) Conceitos de Linguagens de Programação 2013.2 Structured Query Language ( Linguagem de Consulta Estruturada ) Conceito: É a linguagem de pesquisa

Leia mais

Banco de Dados. Prof. Antonio

Banco de Dados. Prof. Antonio Banco de Dados Prof. Antonio SQL - Structured Query Language O que é SQL? A linguagem SQL (Structure query Language - Linguagem de Consulta Estruturada) é a linguagem padrão ANSI (American National Standards

Leia mais

O atacante pode roubar a sessão de um usuário legítimo do sistema, que esteja previamente autenticado e realizar operações que o mesmo poderia.

O atacante pode roubar a sessão de um usuário legítimo do sistema, que esteja previamente autenticado e realizar operações que o mesmo poderia. Explorando e tratando a falha de Cross-site-scripting (XSS) 1 D E D E Z E M B R O D E 2 0 1 5 Muito pouco falada e com alto nível crítico dentro das vulnerabilidades relatadas, o Cross-site-scripting (XSS)

Leia mais

Injeção de SQL - Detecção de evasão

Injeção de SQL - Detecção de evasão Injeção de SQL - Detecção de evasão Resumo A detecção dos ataques de injeção de SQL era feita inicialmente com o uso de técnicas de reconhecimento de padrões, verificados contra assinaturas e palavraschave

Leia mais

PRODUÇÃO CARTOGRÁFICA SERVIÇOS WEB

PRODUÇÃO CARTOGRÁFICA SERVIÇOS WEB SERVIÇOS WEB World Wide Web Evolução de simples páginas com conteúdo estático para páginas com conteúdos dinâmicos (extraídos, principalmente, de Sistemas Gerenciadores de Bancos de Dados SGBD) Tecnologias

Leia mais

Entendendo Injeção de SQL

Entendendo Injeção de SQL Entendendo Injeção de SQL Autor K4m1k451 < k4m1k451@gmail.com bere_bad@hotmail.com > 18/05/2009 Sumário: ---[ 0x00 Introdução... 4 ---[ 0x01 Desmistificando as single quotes... 4 ---[ 0x02 Injetando...

Leia mais

CONCEITOS INICIAIS. Agenda A diferença entre páginas Web, Home Page e apresentação Web;

CONCEITOS INICIAIS. Agenda A diferença entre páginas Web, Home Page e apresentação Web; CONCEITOS INICIAIS Agenda A diferença entre páginas Web, Home Page e apresentação Web; O que é necessário para se criar páginas para a Web; Navegadores; O que é site, Host, Provedor e Servidor Web; Protocolos.

Leia mais

Introdução a Informática. Prof.: Roberto Franciscatto

Introdução a Informática. Prof.: Roberto Franciscatto Introdução a Informática Prof.: Roberto Franciscatto 6.1 ARQUIVOS E REGISTROS De um modo geral os dados estão organizados em arquivos. Define-se arquivo como um conjunto de informações referentes aos elementos

Leia mais

Intranets. FERNANDO ALBUQUERQUE Departamento de Ciência da Computação Universidade de Brasília 1.INTRODUÇÃO

Intranets. FERNANDO ALBUQUERQUE Departamento de Ciência da Computação Universidade de Brasília 1.INTRODUÇÃO Intranets FERNANDO ALBUQUERQUE Departamento de Ciência da Computação Universidade de Brasília 1.INTRODUÇÃO As intranets são redes internas às organizações que usam as tecnologias utilizadas na rede mundial

Leia mais

Programação Web Prof. Wladimir

Programação Web Prof. Wladimir Programação Web Prof. Wladimir Linguagem de Script e PHP @wre2008 1 Sumário Introdução; PHP: Introdução. Enviando dados para o servidor HTTP; PHP: Instalação; Formato básico de um programa PHP; Manipulação

Leia mais

DESENVOLVIMENTO DE SOFTWARE

DESENVOLVIMENTO DE SOFTWARE VARIAÁ VEL Antes de iniciarmos os comandos referentes a Banco de Dados, precisamos de uma breve descrição técnica sobre Variáveis que serão uma constante em programação seja qual for sua forma de leitura.

Leia mais

Desenvolvimento Web. Saymon Yury C. Silva Analista de Sistemas. http://www.saymonyury.com.br

Desenvolvimento Web. Saymon Yury C. Silva Analista de Sistemas. http://www.saymonyury.com.br Desenvolvimento Web Saymon Yury C. Silva Analista de Sistemas http://www.saymonyury.com.br Vantagens Informação em qualquer hora e lugar; Rápidos resultados; Portabilidade absoluta; Manutenção facilitada

Leia mais

Programação para a Internet. Prof. M.Sc. Sílvio Bacalá Jr sbacala@gmail.com www.facom.ufu.br/~bacala

Programação para a Internet. Prof. M.Sc. Sílvio Bacalá Jr sbacala@gmail.com www.facom.ufu.br/~bacala Programação para a Internet Prof. M.Sc. Sílvio Bacalá Jr sbacala@gmail.com www.facom.ufu.br/~bacala A plataforma WEB Baseada em HTTP (RFC 2068) Protocolo simples de transferência de arquivos Sem estado

Leia mais

UNIVERSIDADE DA BEIRA INTERIOR Faculdade de Engenharia Departamento de Informática

UNIVERSIDADE DA BEIRA INTERIOR Faculdade de Engenharia Departamento de Informática 1 Este é o seu teste de avaliação de frequência. Leia as perguntas com atenção antes de responder. Escreva as suas respostas nesta folha de teste, marcando um círculo em volta da opção ou opções que considere

Leia mais

Segurança na Web. André Tavares da Silva. andre.silva@udesc.br

Segurança na Web. André Tavares da Silva. andre.silva@udesc.br Segurança na Web André Tavares da Silva andre.silva@udesc.br Propósito da Segurança A segurança não é usada simplesmente para proteger contra ataques diretos mas é essencial para estabelecer credibilidade/confiança

Leia mais

GLOSSÁRIO. ActiveX Controls. É essencialmente uma interface usada para entrada e saída de dados para uma aplicação.

GLOSSÁRIO. ActiveX Controls. É essencialmente uma interface usada para entrada e saída de dados para uma aplicação. GLOSSÁRIO Este glossário contém termos e siglas utilizados para Internet. Este material foi compilado de trabalhos publicados por Plewe (1998), Enzer (2000) e outros manuais e referências localizadas na

Leia mais

www.coldfusionbrasil.com.br

www.coldfusionbrasil.com.br www.coldfusionbrasil.com.br 2000 1 O que é Cold Fusion? 3 Arquitetura Cold Fusion 3 Cold Fusion Markup Language (CFML) 4 O que devo saber para programar em CFML? 4 HTML 4 Desenho de Banco de Dados Relacionais

Leia mais

Prof. Roberto Franciscatto 4º Semestre - TSI - CAFW. Free Powerpoint Templates Page 1

Prof. Roberto Franciscatto 4º Semestre - TSI - CAFW. Free Powerpoint Templates Page 1 Segurança na Web Capítulo 9: Segurança em Aplicações Web Prof. Roberto Franciscatto 4º Semestre - TSI - CAFW Page 1 Introdução Quando se fala em segurança na WEB é preciso pensar inicialmente em duas frentes:

Leia mais

Aula 01: Apresentação da Disciplina e Introdução a Conceitos Relacionados a Internet e WEB

Aula 01: Apresentação da Disciplina e Introdução a Conceitos Relacionados a Internet e WEB Aula 01: Apresentação da Disciplina e Introdução a Conceitos Relacionados a Internet e WEB Regilan Meira Silva Professor de Informática do Campus Ilhéus Formação em Ciência da Computação com Especialização

Leia mais

Autoria Web Apresentação e Visão Geral sobre a Web

Autoria Web Apresentação e Visão Geral sobre a Web Apresentação e Visão Geral sobre a Web Apresentação Thiago Miranda Email: mirandathiago@gmail.com Site: www.thiagomiranda.net Objetivos da Disciplina Conhecer os limites de atuação profissional em Web

Leia mais

Linguagem de Consulta Estruturada SQL- DML

Linguagem de Consulta Estruturada SQL- DML Linguagem de Consulta Estruturada SQL- DML INTRODUÇÃO A SQL - Structured Query Language, foi desenvolvido pela IBM em meados dos anos 70 como uma linguagem de manipulação de dados (DML - Data Manipulation

Leia mais

Internet. Protocolos. Principais Serviços. E-MAIL Chat TELNET FTP. Definições Básicas

Internet. Protocolos. Principais Serviços. E-MAIL Chat TELNET FTP. Definições Básicas Internet A Internet surgiu a partir de um projeto da agência norte-americana ARPA com o objetivo de conectar os computadores dos seus departamentos de pesquisa. Essa conexão iniciou-se em 1969, entre 4

Leia mais

Introdução ao SQL. O que é SQL?

Introdução ao SQL. O que é SQL? Introdução ao SQL 1 O que é SQL? Inicialmente chamada de Sequel, SQL (Structured Query Language), é a linguagem padrão utilizada para comunicar-se com um banco de dados relacional. A versão original foi

Leia mais

Programação de Servidores CST Redes de Computadores. Marx Gomes Van der Linden

Programação de Servidores CST Redes de Computadores. Marx Gomes Van der Linden Programação de Servidores CST Redes de Computadores Marx Gomes Van der Linden Programação de Servidores Aplicações cliente/servidor para web. Fundamentos de HTML+CSS. Linguagem de programação de servidor:

Leia mais

SQL Linguagem de Definição de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

SQL Linguagem de Definição de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri SQL Linguagem de Definição de Dados Banco de Dados SQL Structured Query Language Uma das mais importantes linguagens relacionais (se não a mais importante) Exemplos de SGBD que utilizam SQL Oracle Informix

Leia mais

Introdução ao PHP. Prof. Késsia Marchi

Introdução ao PHP. Prof. Késsia Marchi Introdução ao PHP Prof. Késsia Marchi PHP Originalmente PHP era um assíncrono para Personal Home Page. De acordo com convenções para atribuições de nomes recursivas do GNU foi alterado para PHP Hypertext

Leia mais

Guia de Consulta Rápida HTTP. Décio Jr. Novatec Editora. www.novateceditora.com.br

Guia de Consulta Rápida HTTP. Décio Jr. Novatec Editora. www.novateceditora.com.br Guia de Consulta Rápida HTTP Décio Jr. Novatec Editora www.novateceditora.com.br Guia de Consulta Rápida HTTP de Décio Jr. Copyright 2001 da Novatec Editora Ltda. Todos os direitos reservados. É proibida

Leia mais

UM NOVO CONCEITO EM AUTOMAÇÃO. Série Ponto

UM NOVO CONCEITO EM AUTOMAÇÃO. Série Ponto UM NOVO CONCEITO EM AUTOMAÇÃO Série Ponto POR QUE NOVO CONCEITO? O que é um WEBPLC? Um CP na WEB Por que usar INTERNET? Controle do processo de qualquer lugar WEBGATE = conexão INTERNET/ALNETII WEBPLC

Leia mais

Sumário. Capítulo 1 Revisão de PHP... 19. Capítulo 2 Melhorando o processamento de formulários... 46

Sumário. Capítulo 1 Revisão de PHP... 19. Capítulo 2 Melhorando o processamento de formulários... 46 9 Sumário O Autor... 8 Introdução... 15 Quem deve ler este livro... 15 Como este livro está organizado...16 Download do código-fonte do livro... 18 Capítulo 1 Revisão de PHP... 19 Iniciando em PHP... 19

Leia mais

Programação WEB II. PHP e Banco de Dados. progweb2@thiagomiranda.net. Thiago Miranda dos Santos Souza

Programação WEB II. PHP e Banco de Dados. progweb2@thiagomiranda.net. Thiago Miranda dos Santos Souza PHP e Banco de Dados progweb2@thiagomiranda.net Conteúdos Os materiais de aula, apostilas e outras informações estarão disponíveis em: www.thiagomiranda.net PHP e Banco de Dados É praticamente impossível

Leia mais

Segurança da Informação

Segurança da Informação Segurança da Informação Segurança e Vulnerabilidades em Aplicações Web jobona@terra.com.br Definição: Segurança Segundo o dicionário da Wikipédia, o termo segurança significa: 1. Condição ou estado de

Leia mais

AULA 1 PHP O QUE É APACHE FRIENDS

AULA 1 PHP O QUE É APACHE FRIENDS O QUE É PHP Se você já programa PHP, aconselho que pule para o capítulo 7 desse livro. Pois até esse capitulo iremos abordar algoritmos em PHP até a construção de uma classe com seus métodos e atributos

Leia mais

Conteúdo Programático de PHP

Conteúdo Programático de PHP Conteúdo Programático de PHP 1 Por que PHP? No mercado atual existem diversas tecnologias especializadas na integração de banco de dados com a WEB, sendo o PHP a linguagem que mais se desenvolve, tendo

Leia mais

www.f2b.com.br 18/04/2006 Micropagamento F2b Web Services Web rev 00

www.f2b.com.br 18/04/2006 Micropagamento F2b Web Services Web rev 00 www.f2b.com.br 18/04/2006 Micropagamento F2b Web Services Web rev 00 Controle de Revisões Micropagamento F2b Web Services/Web 18/04/2006 Revisão Data Descrição 00 17/04/2006 Emissão inicial. www.f2b.com.br

Leia mais

ADO.NET - Roteiro básico e Boas Práticas

ADO.NET - Roteiro básico e Boas Práticas ADO.NET - Roteiro básico e Boas Práticas Confuso com tantos conceitos novos, com tantas siglas e acrósticos? Qual provedor usar? Devo usar DataSet ou DataReader? Se essas e outras dúvidas te atormentam,

Leia mais

Aula 1 Acesso a Banco de Dados

Aula 1 Acesso a Banco de Dados Laboratório de Banco de Dados Aula 1 Acesso a Banco de Dados Prof. Josenildo Silva jcsilva@ifma.edu.br Introdução O JDBC (Java Database Connectivity) foi criado com o intuito de fornecer aos programadores

Leia mais

FileMaker 13. Guia de ODBC e JDBC

FileMaker 13. Guia de ODBC e JDBC FileMaker 13 Guia de ODBC e JDBC 2004 2013 FileMaker Inc. Todos os direitos reservados. FileMaker Inc. 5201 Patrick Henry Drive Santa Clara, Califórnia 95054 FileMaker e Bento são marcas comerciais da

Leia mais

SQL Injection, entenda o que é, aprenda a evitá-lo

SQL Injection, entenda o que é, aprenda a evitá-lo Revista Eletrônica da Faculdade Metodista Granbery http://re.granbery.edu.br ISSN 1981 0377 Curso de Sistemas de Informação N. 9, JUL/DEZ 2010 SQL Injection, entenda o que é, aprenda a evitá-lo Heitor

Leia mais

Fundamentos dos Sistemas de Informação Organização de Dados e Informações

Fundamentos dos Sistemas de Informação Organização de Dados e Informações Fundamentos dos Sistemas de Informação Organização de Dados e Informações http://professor.fimes.edu.br/milena milenaresende@fimes.edu.br Sistema de Gerenciamento de Bases de Dados (DBMS) A implementação

Leia mais

LINGUAGEM SQL. DML - Linguagem de Manipulação de Dados

LINGUAGEM SQL. DML - Linguagem de Manipulação de Dados LINGUAGEM SQL Structured Query Language, ou Linguagem de Consulta Estruturada ou SQL, é uma linguagem de pesquisa declarativa para banco de dados relacional (base de dados relacional). Muitas das características

Leia mais

Utilizaremos a última versão estável do Joomla (Versão 2.5.4), lançada em

Utilizaremos a última versão estável do Joomla (Versão 2.5.4), lançada em 5 O Joomla: O Joomla (pronuncia-se djumla ) é um Sistema de gestão de conteúdos (Content Management System - CMS) desenvolvido a partir do CMS Mambo. É desenvolvido em PHP e pode ser executado no servidor

Leia mais

GBD. Introdução PROF. ANDREZA S. AREÃO

GBD. Introdução PROF. ANDREZA S. AREÃO GBD Introdução PROF. ANDREZA S. AREÃO Sistema de arquivos X Sistemas de Banco de Dados Sistema de arquivos Sistema de Banco de Dados Aplicativos Dados (arquivos) Aplicativos SGBD Dados (arquivos) O acesso/gerenciamento

Leia mais

Apresentação de REDES DE COMUNICAÇÃO

Apresentação de REDES DE COMUNICAÇÃO Apresentação de REDES DE COMUNICAÇÃO Curso Profissional de Técnico de Gestão e Programação de Sistemas Informáticos MÓDULO VII Acesso a Bases de Dados via Web Duração: 50 tempos Conteúdos (1) Conceitos

Leia mais

Servidor IIS. Sorayachristiane.blogspot.com

Servidor IIS. Sorayachristiane.blogspot.com Servidor IIS Servidor IIS IIS Serviço de informação de Internet; É um servidor que permite hospedar um ou vários sites web no mesmo computador e cria uma distribuição de arquivos utilizando o protocolo

Leia mais

5 O Joomla: Web Apache Banco de Dados MySQL http://www.joomla.org/ - 55 -

5 O Joomla: Web Apache Banco de Dados MySQL http://www.joomla.org/ - 55 - 5 O Joomla: O Joomla (pronuncia-se djumla ) é um Sistema de Gestão de Conteúdos (Content Management System - CMS) desenvolvido a partir do CMS Mambo. É desenvolvido em PHP e pode ser executado no servidor

Leia mais

Curso de Aprendizado Industrial Desenvolvedor WEB

Curso de Aprendizado Industrial Desenvolvedor WEB Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos II Professor: Cheli dos S. Mendes da Costa Modelo Cliente- Servidor Modelo de Aplicação Cliente-servidor Os

Leia mais

ATIVIDADES PRÁTICAS SUPERVISIONADAS

ATIVIDADES PRÁTICAS SUPERVISIONADAS ATIVIDADES PRÁTICAS SUPERVISIONADAS CST em Análise e Desenvolvimento de Sistemas 4ª Série Desenvolvimento de Software Seguro A atividade prática supervisionada (ATPS) é um procedimento metodológico de

Leia mais

XSS - CROSS-SITE SCRIPTING

XSS - CROSS-SITE SCRIPTING Segurança XSS - CROSS-SITE SCRIPTING XSS - CROSS-SITE SCRIPTING Vamos supor a seguinte situação: O site ingenuo.com tem um fórum As pessoas escrevem comentários nesse fórum e eles são salvos diretamente

Leia mais

Laboratório de Banco de Dados Aula 1 Acesso a Banco de Dados. Prof. Josenildo Silva jcsilva@ifma.edu.br

Laboratório de Banco de Dados Aula 1 Acesso a Banco de Dados. Prof. Josenildo Silva jcsilva@ifma.edu.br Laboratório de Banco de Dados Aula 1 Acesso a Banco de Dados Prof. Josenildo Silva jcsilva@ifma.edu.br Introdução O JDBC (Java Database Connectivity) foi criado com o intuito de fornecer aos programadores

Leia mais

CAPÍTULO 2. Este capítulo tratará :

CAPÍTULO 2. Este capítulo tratará : 1ª PARTE CAPÍTULO 2 Este capítulo tratará : 1. O que é necessário para se criar páginas para a Web. 2. A diferença entre páginas Web, Home Page e apresentação Web 3. Navegadores 4. O que é site, Host,

Leia mais

Sumário Agradecimentos... 19 Sobre.o.autor... 20 Prefácio... 21 Capítulo.1..Bem-vindo.ao.MySQL... 22

Sumário Agradecimentos... 19 Sobre.o.autor... 20 Prefácio... 21 Capítulo.1..Bem-vindo.ao.MySQL... 22 Sumário Agradecimentos... 19 Sobre o autor... 20 Prefácio... 21 Capítulo 1 Bem-vindo ao MySQL... 22 1.1 O que é o MySQL?...22 1.1.1 História do MySQL...23 1.1.2 Licença de uso...23 1.2 Utilizações recomendadas...24

Leia mais

Desenvolvimento em Ambiente Web. Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com

Desenvolvimento em Ambiente Web. Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com Desenvolvimento em Ambiente Web Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com Internet A Internet é um conjunto de redes de computadores de domínio público interligadas pelo mundo inteiro, que tem

Leia mais

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões Prof. MSc. Hugo Souza Se você precisar manter informações sobre seus usuários enquanto eles navegam pelo seu site, ou até quando eles saem

Leia mais

Segurança em Aplicações Web Metodologia OWASP

Segurança em Aplicações Web Metodologia OWASP Segurança em Aplicações Web Metodologia OWASP Weekly Seminar Lucas Vinícius da Rosa Laboratório de Segurança em Computação () Universidade Federal de Santa Catarina (UFSC) lvrosa@inf.ufsc.br 2012 Sumário

Leia mais

CA Nimsoft Monitor Snap

CA Nimsoft Monitor Snap CA Nimsoft Monitor Snap Guia de Configuração do Monitoramento de resposta do ponto de extremidade do URL url_response série 4.1 Avisos legais Copyright 2013, CA. Todos os direitos reservados. Garantia

Leia mais

Programação com Acesso a Banco de Dados

Programação com Acesso a Banco de Dados Campus Ipanguaçu Curso: Técnico em Informática Programação com Acesso a Banco de Dados AULA 17 ACESSO A BANCO DE DADOS COM JDBC PROF.: CLAYTON M. COSTA 2 011.2 Introdução Aplicação + Banco de Dados: Funcionalidade

Leia mais

Desenvolvendo Aplicações Web com NetBeans

Desenvolvendo Aplicações Web com NetBeans Desenvolvendo Aplicações Web com NetBeans Aula 3 Cap. 4 Trabalhando com Banco de Dados Prof.: Marcelo Ferreira Ortega Introdução O trabalho com banco de dados utilizando o NetBeans se desenvolveu ao longo

Leia mais

Tecnologias da Internet (T) Avaliação de Frequência (v1) 60 minutos * 09.05.2012

Tecnologias da Internet (T) Avaliação de Frequência (v1) 60 minutos * 09.05.2012 1 Este é o seu teste de avaliação de frequência. Leia as perguntas com atenção antes de responder e tenha atenção que algumas perguntas podem ter alíneas de resposta em páginas diferentes. Escreva as suas

Leia mais

Lista de Exercício: PARTE 1

Lista de Exercício: PARTE 1 Lista de Exercício: PARTE 1 1. Questão (Cód.:10750) (sem.:2a) de 0,50 O protocolo da camada de aplicação, responsável pelo recebimento de mensagens eletrônicas é: ( ) IP ( ) TCP ( ) POP Cadastrada por:

Leia mais

ANEXO 9 DO PROJETO BÁSICO DA FERRAMENTA DE MONITORAMENTO, SEGURANÇA E AUDITORIA DE BANCO DE DADOS

ANEXO 9 DO PROJETO BÁSICO DA FERRAMENTA DE MONITORAMENTO, SEGURANÇA E AUDITORIA DE BANCO DE DADOS ANEXO 9 DO PROJETO BÁSICO DA FERRAMENTA DE MONITORAMENTO, SEGURANÇA E AUDITORIA DE BANCO DE DADOS Sumário 1. Finalidade... 2 2. Justificativa para contratação... 2 3. Premissas para fornecimento e operação

Leia mais

Implementar servidores de Web/FTP e DFS. Disciplina: Serviços de Redes Microsoft Professor: Fernando Santorsula fernando.santorsula@esamc.

Implementar servidores de Web/FTP e DFS. Disciplina: Serviços de Redes Microsoft Professor: Fernando Santorsula fernando.santorsula@esamc. Implementar servidores de Web/FTP e DFS Disciplina: Serviços de Redes Microsoft Professor: Fernando Santorsula fernando.santorsula@esamc.br Conteúdo programático Introdução ao protocolo HTTP Serviço web

Leia mais

Segurança na WEB Ambiente WEB estático

Segurança na WEB Ambiente WEB estático Segurança de Redes Segurança na WEB Prof. Rodrigo Rocha prof.rodrigorocha@yahoo.com Servidor IIS Apache Cliente Browser IE FireFox Ambiente WEB estático 1 Ambiente Web Dinâmico Servidor Web Cliente Navegadores

Leia mais

Segurança da Internet. Ricardo Terra (rterrabh [at] gmail.com) Segurança da Internet Outubro, 2013 2012 1

Segurança da Internet. Ricardo Terra (rterrabh [at] gmail.com) Segurança da Internet Outubro, 2013 2012 1 Segurança da Internet Ricardo Terra rterrabh [at] gmail.com Outubro, 2013 2012 1 CV Nome: Ricardo Terra Email: rterrabh [at] gmail.com www: ricardoterra.com.br Twitter: rterrabh Lattes: lattes.cnpq.br/

Leia mais

Março/2005 Prof. João Bosco M. Sobral

Março/2005 Prof. João Bosco M. Sobral Plano de Ensino Introdução à Segurança da Informação Princípios de Criptografia Segurança de Redes Segurança de Sistemas Símbolos: S 1, S 2,..., S n Um símbolo é um sinal (algo que tem um caráter indicador)

Leia mais

ORACLE 11 G INTRODUÇÃO AO ORACLE, SQL,PL/SQL. Carga horária: 32 Horas

ORACLE 11 G INTRODUÇÃO AO ORACLE, SQL,PL/SQL. Carga horária: 32 Horas ORACLE 11 G INTRODUÇÃO AO ORACLE, SQL,PL/SQL Carga horária: 32 Horas Pré-requisito: Para que os alunos possam aproveitar este treinamento ao máximo, é importante que eles tenham participado dos treinamentos

Leia mais

FileMaker 14. Guia de ODBC e JDBC

FileMaker 14. Guia de ODBC e JDBC FileMaker 14 Guia de ODBC e JDBC 2004 2015 FileMaker Inc. Todos os direitos reservados. FileMaker Inc. 5201 Patrick Henry Drive Santa Clara, Califórnia 95054 FileMaker e FileMaker Go são marcas comerciais

Leia mais

CA Nimsoft Monitor. Guia do Probe Monitoramento de resposta do ponto de extremidade do URL. url_response série 4.1

CA Nimsoft Monitor. Guia do Probe Monitoramento de resposta do ponto de extremidade do URL. url_response série 4.1 CA Nimsoft Monitor Guia do Probe Monitoramento de resposta do ponto de extremidade do URL url_response série 4.1 Aviso de copyright do CA Nimsoft Monitor Este sistema de ajuda online (o Sistema ) destina-se

Leia mais

Universidade Federal de Viçosa CPD - Central de Processamento de Dados Divisão de Desenvolvimento de Sistemas

Universidade Federal de Viçosa CPD - Central de Processamento de Dados Divisão de Desenvolvimento de Sistemas Universidade Federal de Viçosa CPD - Central de Processamento de Dados Divisão de Desenvolvimento de Sistemas Manual de padrões e convenções para desenvolvimento de sistemas PHP Versão Conteúdo 1.

Leia mais

BANCO DE DADOS WEB AULA 4. linguagem SQL: subconjuntos DCL, DDL e DML. professor Luciano Roberto Rocha. www.lrocha.com

BANCO DE DADOS WEB AULA 4. linguagem SQL: subconjuntos DCL, DDL e DML. professor Luciano Roberto Rocha. www.lrocha.com BANCO DE DADOS WEB AULA 4 linguagem SQL: subconjuntos DCL, DDL e DML professor Luciano Roberto Rocha www.lrocha.com O que é SQL? Structured Query Language, ou Linguagem de Consulta Estruturada ou SQL,

Leia mais

Prova de pré-requisito

Prova de pré-requisito Prova de pré-requisito Curso Python e Django 1. Ao se acessar o site www.google.com qual comando e parâmetros são enviados para o servidor pelo navegador? a. GET / b. GET www.google.com c. PAGE index.html

Leia mais

APOSTILA DE LINGUAGEM DE PROGRAMAÇÃO IV

APOSTILA DE LINGUAGEM DE PROGRAMAÇÃO IV APOSTILA DE LINGUAGEM DE PROGRAMAÇÃO IV CIÊNCIA DA COMPUTAÇÃO PROF. ERWIN ALEXANDER UHLMANN Universidade Guarulhos Página 1 Agradecimentos Agradeço a todos os alunos que com suas dúvidas me ajudaram a

Leia mais

Universidade Federal de Mato Grosso

Universidade Federal de Mato Grosso Universidade Federal de Mato Grosso Programação III Curso de Ciência da Computação Prof. Thiago P. da Silva thiagosilva@ufmt.br Material basedado em [Kurose&Ross 2009] e [Gonçalves, 2007] Agenda Internet

Leia mais

Desenvolvendo Websites com PHP

Desenvolvendo Websites com PHP Desenvolvendo Websites com PHP Aprenda a criar Websites dinâmicos e interativos com PHP e bancos de dados Juliano Niederauer 19 Capítulo 1 O que é o PHP? O PHP é uma das linguagens mais utilizadas na Web.

Leia mais

CONTRA CONTROLE DE ACESSOS E MODULARIZADOR DE SISTEMAS

CONTRA CONTROLE DE ACESSOS E MODULARIZADOR DE SISTEMAS MINISTÉRIO DO DESENVOLVIMENTO AGRÁRIO SUBSECRETARIA DE PLANEJAMENTO, ORÇAMENTO E ADMINISTRAÇÃO COORDENAÇÃO-GERAL DE MODERNIZAÇÃO E INFORMÁTICA CONTRA CONTROLE DE ACESSOS E MODULARIZADOR DE SISTEMAS MANUAL

Leia mais

Nomes: Questão 1 Vulnerabilidade: SQL Injection (Injeção de SQL):

Nomes: Questão 1 Vulnerabilidade: SQL Injection (Injeção de SQL): Nomes: Questão 1 Vulnerabilidade: SQL Injection (Injeção de SQL): Nos últimos anos uma das vulnerabilidades mais exploradas por usuários mal-intencionados é a injeção de SQL, onde o atacante realiza uma

Leia mais

Manual do Usuário Características e recursos básicos Enterprise Resource Planning

Manual do Usuário Características e recursos básicos Enterprise Resource Planning Manual do Usuário Características e recursos básicos Enterprise Resource Planning www.pwi.com.br 1 Volpe Enterprise Resource Planning Este manual não pode, em parte ou no seu todo, ser copiado, fotocopiado,

Leia mais

Publicação web. Será ativado um assistente de publicação que lhe guiará em todas as etapas a seguir apresentadas.

Publicação web. Será ativado um assistente de publicação que lhe guiará em todas as etapas a seguir apresentadas. Publicação web Pré requisitos: Lista de questões Formulário multimídia Este tutorial tem como objetivo, demonstrar de maneira ilustrativa, todos os passos e opções que devem ser seguidos para publicar

Leia mais

Prof. Omero, pág. 63. Banco de Dados InterBase.

Prof. Omero, pág. 63. Banco de Dados InterBase. Prof. Omero, pág. 63 O que é o InterBase? O InterBase é um SGBDR - Sistema Gerenciador de Banco de Dados Cliente/Servidor Relacional 1 que está baseado no padrão SQL ANSI-9, de alta performance, independente

Leia mais

O que são Bancos de Dados?

O que são Bancos de Dados? SQL Básico Liojes de Oliveira Carneiro professor.liojes@gmail.com www.professor-liojes.blogspot.com O que são Bancos de Dados? É o software que armazena, organiza, controla, trata e distribui os dados

Leia mais