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



Documentos relacionados
CRUD GERAL E LOGIN Sumário

JAVAWEB AULA 2 Prof. Daniela Pires Sumário

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

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

JAVAWEB AULA 2 Prof. Daniela Pires Sumário

WEBDESIGN. Professor: Paulo Marcos Trentin - paulo@paulotrentin.com.br Escola CDI de Videira

Fonte: - Illustration by Gaich Muramatsu

Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL.

Controle de acesso. .com.br

Podemos também definir o conteúdo dos menus da página inicial. Clique em Menus, Main Menu.

SIMULADOS & TUTORIAIS

Criando Banco de Dados, Tabelas e Campos através do HeidiSQL. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

Iniciando o MySQL Query Brower

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

XSS - CROSS-SITE SCRIPTING

TUTORIAL DE INSTALAÇÃO APACHE PHP POSTGRESQL 8.2

Scriptlets e Formulários

Instalando servidor Apache com MySQL e as linguagens ColdFusion e PHP. XAMPP (xampp-win installer.exe), veja aqui.

Passos Preliminares: Acessando a máquina virtual via ssh.

Conceitos de extensões Joomla!

INTRODUÇÃO: 1 - Conectando na sua conta

Obs: É necessário utilizar um computador com sistema operacional Windows 7.

PHP: Formulários e upload de múltiplos arquivos Por Alfred Reinold Baudisch 28 de fevereiro de 2006.

Follow-Up Acompanhamento Eletrônico de Processos (versão 3.0) Manual do Sistema. 1. Como acessar o sistema Requisitos mínimos e compatibilidade

Segurança em Sistemas Web. Addson A. Costa

Como instalar o Ocomon passo a passo.

MANUAL DE FTP. Instalando, Configurando e Utilizando FTP

Segurança Web com PHP 5 Douglas V. Pasqua Zend Certified Enginner

Conteúdo O que é?... 4 Histórico... 4 Onde Baixar?... 4 Diferença entre Firebird e o Interbase... 4 Como instalar?... 4 Instalando o Ibexpert...

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

Introdução ao HTML Utilizando frames Hospedando seu site na WEB

Estudo Dirigido - Parte 1

FERRAMENTAS DE COLABORAÇÃO CORPORATIVA

Para participar de um mapa colaborativo usando o Cmap Tools

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

Manual Versão: 2.0 Autor: Alex Luciano Msn: Instalação

CONFIGURAÇÃO MINIMA EXIGIDA:

Boas Práticas de Desenvolvimento Seguro

Programando em PHP. Conceitos Básicos

INSTALANDO E CONFIGURANDO O MY SQL

Tutorial de animação

Procedimentos para Configuração de Redirecionamento de Portas

Programação WEB II. Sessions e Cookies. progweb2@thiagomiranda.net. Thiago Miranda dos Santos Souza

Esse manual é um conjunto de perguntas e respostas para usuários(as) do Joomla! 1.5.

ETEC DR. EMÍLIO HENRNANDEZ AGUILAR PROGRAMAÇÃO DE COMPUTADORES II PROFESSOR RAFAEL BARRETO

15/8/2007 Gerencia de Tecnologia da Informação Claudia M.S. Tomaz

Banco de Dados Oracle 10g

MICROSOFT EXCEL AVANÇADO

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE ESCOLA AGRÍCOLA DE JUNDIAÍ EAJ - PRONATEC / REDE etec MÓDULO III DESENVOLVIMENTO PROFESSOR ADDSON COSTA

Programação web Prof. Wladimir

Curso de Informática Básica

3. No painel da direita, dê um clique com o botão direito do mouse em qualquer espaço livre (área em branco).

Como acessar o novo webmail da Educação? Manual do Usuário. 15/9/2009 Gerencia de Suporte, Redes e Novas Tecnologias Claudia M.S.

JDBC Java Database Connectivity

Aula 05 HTML FORMULÁRIOS Prof. Daniela Pires Sumário

Material de apoio a aulas de Desenvolvimento Web. Tutorial Java WEB JSP & HTML & CSS & CLASSE & OBJETOS. AAS -

Desenvolvendo Websites com PHP

Instalando o Lazarus e outros sistemas de suporte. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

Manual de instalação, configurações e uso do LiveZilla

Docas do Pará - Guia de Instalação

Escrito por Paulo Ricardo - Gambware Qua, 08 de Setembro de :47 - Última atualização Sex, 24 de Setembro de :18

Manual do Instar Mail v2.0

Bool setcookie (string nome [, string valor [, int validade [, string caminho [, string dominio [, int seguro]]]]] )

Manual de Instalação. SafeSign Standard (Para MAC OS 10.7)

Tutorial. Começando a Criar Aplicativos SMS

Veja abaixo um exemplo de como os dados são mostrados quando usamos o

LINX POSTOS AUTOSYSTEM

Como mandar mensagens OSC pelo Flash via Flosc

PgAdmin. O pgadmin é um software gráfico para administração do SGBD PostgreSQL disponível para Windows e UNIX.

Projeto Amadeus. Guia de Instalação Windows

1. Introdução pág.3 2. Apresentação do sistema Joomla! pág.4 3. Acessando a administração do site pág.4 4. Artigos 4.1. Criando um Artigo 4.2.

Guia de utilização versão Sou Empresa SISCONV AREF

Manual de Instalação e Configuração do SQL Express

PHP Material de aula prof. Toninho (8º Ano)

8VDQGR5HSRUW0DQDJHUFRP&ODULRQH3RVWJUH64/ -XOLR&HVDU3HGURVR 8VDQGRSDUkPHWURV

ETEC DR. EMÍLIO HENRNANDEZ AGUILAR PROGRAMAÇÃO DE COMPUTADORES II PROFESSOR RAFAEL BARRETO DELPHI FORMULÁRIO COM ABAS E BUSCAS DE REGISTROS

Tutorial contas a pagar

Lazarus pelo SVN Linux/Windows

JavaScript (Funções, Eventos e Manipulação de Formulários)

WF Processos. Manual de Instruções

AULA 4 VISÃO BÁSICA DE CLASSES EM PHP

Introdução ao Sistema. Características

Este tutorial mostra como utilizar as ferramentas Send Mail e Web Commands.

COMO SOLICITAR O CADASTRO DE UM ITEM SSA Central de Cadastro

MANUAL DE CONFIGURAÇÃO DO BACKUP

MANUAL DO ANIMAIL Terti Software

Manual de Envio de Torpedos SMS Comtele. Introdução Cadastrar um Grupo Inserir ou Importar Contatos Ordem de envio...

Conexão ODBC do MySQL com Excel 2010

NewAgent enterprise-brain

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 QUE É A CENTRAL DE JOGOS?

Manual de backup do banco de dados PostgreSQL - Versão 2. Setembro-2011


INTRODUÇÃO AO DESENVOLVIMENTO WEB

MANUAL DE INSTALAÇÃO

Manual de Atualização Versão

Portal da Prefeitura de São Paulo SECOM. MANUAL DO WARAM v. 1.5 Secretarias

Transcrição:

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 TEMPLATE... 6 Criar Menu menu_adm... 8 Construção de sistema Administrativo Um sistema administrativo é composto por CRUDs e Sistema de Segurança através de Login e Senha. Nesse modelo, iremos ensinar como criar um sistema administrativo simples em PHP. Esse modelo é composto de duas partes LOGIN e CRUD. Nessa primeira parte iremos fazer somente o LOGIN. 1

Vamos iniciar a parte do LOGIN. Sistema de Login Iremos construir um sistema de login e senha para garantir a segurança do sistema administrativo. SQL INJECTION Primeiro vamos falar de SQL INJECTION ou INJEÇÃO DE SQL Muitos desenvolvedores web não sabem de como consultas SQL podem ser manipuladas e presumem que uma consulta de SQL é um comando confiável. Significa que consultas SQL são capazes de passar imperceptível por controles de acesso, portanto desviando da autenticação padrão e de checagens de autorização, e algumas vezes consultas SQL podem permitir acesso à comando em nível do sistema operacional do servidor. Injeção direta de comandos SQL é uma técnica onde um atacante cria ou altera comandos SQL existentes para expor dados escondidos, ou sobrescrever dados valiosos, ou ainda executar comandos de sistema perigosos no servidor. Isso é possível se a aplicação pegar a entrada do usuário e combinar com parâmetros estáticos para montar uma consulta SQL. Os exemplos a seguir são baseados em histórias verdadeiras, infelizmente. Devido à falta de validação de entrada e conectando ao banco de dados usando o super-usuário ou um usuário que pode criar usuário, o atacante pode criar um super-usuário no seu banco de dados. Técnicas para Evitar Ataques Você pode dizer que o atacante precisa possuir um pouco de informação sobre o esquema de banco de dados na maioria dos exemplos. Você tem razão, mas você nunca sabe quando e como isso pode ser obtido e, se acontecer, seu banco de dados pode ficar exposto. Se você estiver usando um pacote open source publicamente disponível para lidar com banco de dados, que pode pertencer a um sistema de controle de conteúdo ou fórum, os invasores facilmente produzem uma cópia de parte de seu código. Também pode ser um risco de segurança se este for mal desenhado. Esses ataques se baseiam principalmente em explorar falhas no código escrito sem se preocupar com segurança. Nunca confie em nenhum tipo de entrada, especialmente aquela que vem do lado do cliente, mesmo que venha de um combobox, um campo de entrada escondido (hidden) ou um cookie. O primeiro exemplo mostra como uma consulta inocente pode causar desastres. Nunca conecte ao banco de dados como um super-usuário ou como o dono do banco de dados. Use sempre usuários personalizados com privilégios bem limitados. Verifique se uma entrada qualquer tem o tipo de dados esperado. O JSP tem um grande número de funções de validação de entrada, desde as mais simples encontrada em Funções de Variáveis e em Funções de Tipo de Caracteres (ex.: Integer.parseInt Float.parseFloat() além de usar o suporte a Expressões Regulares Compatível com Perl. Se a aplicação espera por entradas numéricas, considere verificar os dados com a função Integer.parseInt para transformar a string em número se não for com try cash você trata o erro. 1. int num = 0; 2. String recebido = "123"; // o que foi recebido 2

3. try{ 4. num = Integer.parseInt(recebido); 5. 6. }catch(exception ex){ 7. //se der erro mantém o numero como 0 8. num = 0; 9. //System.out.println("Erro = " + ex); 10. } Dai se o numero for 0 você trata a mensagem de erro. AULA APLICAÇÕES PARA WEB Tente testar se um site entra SQL injection preenchendo apenas o campo de login com " OR "=' e na senha deixe vazio, clique no botão e você conseguirá acessar a área administrativa e fuçar tudo. Me pergunte como? Dizendo que você preencheu no login esse código, veja como ficaria na query. $query ="SELECT id FROM users WHERE username = '' OR =' AND password = ''"; O OR faz com que seja ignorado a parte da senha e o acesso é feito sem nada. Agora vamos construir nosso sistema de login e senha. Abra seu projeto de site noticias e vamos criar uma pasta chamada admin e dentro dela um index.jsp com o seguinte código. 3

Agora vamos criar a seguinte rotina de script. Com o IF vamos controlar com a varivel do tipo get cod toda a funcionalidade dessa pagina. String content; content = ""; if(request.getparameter("cod")!= null){ }else{ 4

} A variável string contente em cada trecho fará uma parte do código no default terá um formulário de login e senha como segue abaixo. Formulário de Login e Senha fará parte do DEFAULT content ="<fieldset>"; content +="<legend>login</legend>\n"; content +="<form action=\"/admin/index.jsp?cod=logar\" method=\"post\">\n"; content +="<label>login</label>\n"; content +="<input type=\"text\" class=\"campos\" name=\"login\" size=\"12\"><br />\n"; content +="<label>senha</label>\n"; content +="<input type=\"password\" class=\"campos\" name=\"senha\" size=\"12\">\n"; content +="<div align=\"right\"><input type=\"submit\" class=\"botoes\" value=\"ok\"></div>\n"; content +="</form>\n"; content +="</fieldset>\n"; Esse script cria podendo ser possível passar alguma mensagem de erro. LOGAR Veja o script da PARTE DO LOGIN String login = request.getparameter("login"); String senha = request.getparameter("senha"); String erro = "";//mensagem de erro zerada rs = statement.executequery("select * FROM usuarios WHERE usuario_login ='"+login+"' AND usuario_senha ='"+senha+"'"); rs.next(); int qtd = rs.getint(1); if(qtd > 0 ) {// se existir session.setattribute( "user", rs.getstring("usuario_login")); session.setattribute( "id", rs.getstring("usuario_id")); session.setattribute( "nome_user", rs.getstring("usuario_nome")); String site = new String("boas.jsp"); response.setstatus(response.sc_moved_temporarily); response.setheader("location", site); }else { usuario erro= "Usuário ou senha inválida!";//mensagem de erro de } 5

content = erro; // instancio o formulario de login com as mensagens de erro, se houverem O script acima utilizo a variável GET cod para delimitar a ação da pagina, quando está em default, ou seja, sem ser informada, ela carrega o formulário de login. No caso de LOGAR, ela recupera as variáveis de login e senha digitadas no formulário, trata o SQL INJECTION e faz o login, conforme explicação no código. boas TEMPLATE Seja bemvindo, <%= session.getattribute( "nome_user" ) %> Seja bemvindo, <%= session.getattribute( "nome_user" ) %> Crie um template chamado admin que no meio dele sempre irá carregar conteúdo do admin. Lembre-se que o menu do admin é diferente, como ele será uma arquivo único, vamos criar apenas um template que irá carregar tudo no meio sempre na variável content. Depois devemos incluir o script dos templates das páginas, veja o passo a passo abaixo. 6

7

Criar Menu menu_adm Vá em inc e crie um arquivo menu_adm com o código abaixo. <% String menu; menu = ""; if(session.getattribute( "nome_user" )!= null) { menu = "<ul> <li><a hr ef=\"crudnoticia.jsp\">notícia</a></li> 8

<li><a href=\"logout.jsp\">sair</a></li> </ul>"; }else{ menu = "Área reservada!"; } out.println(menu); %> 9