CURSO ADONAI LINGUAGEM PHP Prof. Alexandre Eugênio. RESUMO - Capitulo 36 - PHP - Criptografia e Segurança



Documentos relacionados
Execícios de Revisão Redes de Computadores Edgard Jamhour. Filtros de Pacotes Criptografia SSL

Estável. Rápida. Simples. Poderosa. Bem documentada. Multi- plataforma. Extensivel.

Sumário. Introdução ao Universo Linux Parte I

Programação WEB. Prof. André Gustavo Duarte de Almeida docente.ifrn.edu.br/andrealmeida. Aula III Introdução PHP

Desenvolvimento de Aplicações Web. Prof. José Eduardo A. de O. Teixeira / j.edu@vqv.com.br

PHP. Hypertext Pre-Processor

Curso De PHP. Aula 4. Formulários. Cookies. Session. Mail

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

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

Segurança Informática em Redes e Sistemas

Internet e Programação Web

fonte:

Segurança em Sistemas Web. Addson A. Costa

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

Conceitos de extensões Joomla!

Programação Web Prof. Wladimir

Configurando um servidor WWW seguro. Centro de Atendimento a Incidentes de Segurança - CAIS

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

Segurança da Informação. Prof. Gleison Batista de Sousa

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

2 echo "PHP e outros.";

FTIN Formação Técnica em Informática Módulo Sistema Proprietário Windows AULA 06. Prof. André Lucio

Internet e Programação Web

Programação Web com PHP. Prof. Wylliams Barbosa Santos Optativa IV Projetos de Sistemas Web

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

Programação web Prof. Wladimir

Formulário (Send & Recieve) Prof. Celso H. Masotti

Criptografia e Segurança em Redes Capítulo 9. Quarta Edição William Stallings

Programando em PHP. Conceitos Básicos

1 - Como Instalar e Configurar Apache, PHP e MySQL no Windows

SISTEMAS DISTRIBUIDOS. Prof. Marcelo de Sá Barbosa

Programação Web Prof. Wladimir

UNIP UNIVERSIDADE PAULISTA

SERVIDOR WEB - APACHE SERVIDOR WEB - APACHE SERVIDOR WEB - APACHE 27/02/2012

XSS - CROSS-SITE SCRIPTING

Aluno: Julio Borba. Ferramenta Pesquisada

Desenvolvimento Web XHTML Formulários. Prof. Bruno E. G. Gomes

GUESTBOOK UTILIZANDO INTERAÇÃO FLASH+PHP

Usar FTK Imager para gerar evidências, exportar arquivos de evidências, criar imagens forenses e converter imagens existentes.

Configure seu Linux pela Web! Instalação à partir de um.tar.gz. Autor: Carlos Eduardo Ribeiro de Melo <eduardo at unisulma.edu.br> Data: 05/10/2004

Instituto Federal do Sertão-PE. Curso de PHP. Professor: Felipe Correia

Segurança na Web. Programação para a Internet. Prof. Vilson Heck Junior

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

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

Gerenciamento e Segurança de Dados

1 O PHP E A WORLD WIDE WEB

COMO FUNCIONA UM FORMULÁRIO

Segurança Web com PHP 5

Aplicação Prática de Lua para Web

7. Recursos PHP para a Internet

PHP e MySQL Autenticação de Usuários

Capítulo 4. Programação em ASP

FTP Protocolo de Transferência de Arquivos

1) Ao ser executado o código abaixo, em PHP, qual será o resultado impresso em tela?

mkdir /srv/www/default/html/calculadora/imagens mkdir /srv/www/default/html/calculadora/blocos

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

Conteúdo Programático de PHP

indica o nome do campo pelo qual podemos acessar.

Instalação do PHP no Linux

SISTEMAS DISTRIBUIDOS

Camadas de Transporte, Sessão & Apresentação. Função. Camadas REDES x TRANSPORTE. Redes de Computadores Prof. Leandro C. Pykosz

OpenSSH

I T I. AC Raiz. Instituto Nacional de Tecnologia da Informação, órgão do Governo Federal. Receita Federal SERASA SERPRO CAIXA CERT PRIVADA

5 Estudo de caso: utilizando o sistema para requisição de material

Sistemas Operacionais. Estruturas de SO. Edeyson Andrade Gomes.

1.6. Tratamento de Exceções

Segurança Informática e nas Organizações. Guiões das Aulas Práticas

CAPITULO 5 COMANDO DE FLUXO IF

Transcrição:

Possíveis Ataques Adulteração de Site Código vulnerável RESUMO - Capitulo 36 - PHP - Criptografia e Segurança $visitor = @$_GET['visitor']; // Solução para vulnerabilidade // $visitor = htmlspecialchars(@$_get['visitor']); if(isset($visitor) &&!empty($visitor)) { $fp = fopen("database", "a"); fwrite($fp, "<li>$visitor</li>\n"); <h1>visitantes deste site:</h1> <ol> $fp = fopen("database", "r"); @print(fread($fp, filesize("database"))); </ol> <hr/> <form> <input type="text" name="visitor" /> <input type="submit" name="submit" value="assinar livro!" /> </form> Acessando o código fonte Modo de proteger o acesso ao código fonte PHP: 1. PHP deve ser instalado como módulo no servidor WEB (MAIS SEGURO); 2. Script CGI o Diretório: cgi-bin o Primeira linha do script: #! /usr/local/bin/php o Compilar com --enalble-discard-path 3. Colocar o interpretador do PHP no diretório cgi-bin, seguindo informações contidas no manual do PHP, utilizar diretivas de redirecionamento do servidor Web, no caso do servidor Web Apache as seguintes configurações são utilizadas: o Action php-script /cgi-bin/php o AddType php-script.php o --enable-force-cgi-redirect 4. Caso o servidor Web não seja o Apache utilize --disable-force-cgi-redirect. 1 de 5

Lendo arquivos arbitrários Código vulnerável $poem = @$_GET['poem']; $fp = fopen($poem, "r"); print (fread($fp, filesize($poem))); <hr/> <form> Escolha um poema: <select name="poem"> <option value="jabb.html">jabberwocky</option> <option value="graves.html">cat- Goddesses</option> </select> <input type="submit" value="mostrar poema" /> </form> Solução apropriada (Negar tudo e liberar o aceitável) switch($poem) { case "jabb": $poem_file = "jabb.html"; break; case "graves": $poem_file = "graves.html"; break; if (issset($poem_file)) { $fp = fopen($poem_file, "r"); print (fread($fp, filesize($poem_file))); 2 de 5

Esta não é uma boa solução (Presumir as entradas não é uma boa prática) if(!strstr($poem, "/") &&!strstr($poem, "\\")) { $fp = fopen($poem, "r"); print (fread($fp, filesize($poem))); O PHP permite explicitamente especificar o conjunto de diretórios nos quais arquivos podem ser abertos definindo o caminho para o diretório como valor da opção open_basedir. Caso haja arquivo sigiloso no diretório, tais com /etc/passwd, o livro sugere o armazenamento das senhas com a encriptação unidirecional (hash) utilizando a função crypt(senha, salt). Criptografia Executando programas arbitrários Utilizar as funções abaixo pode aumentar a vulnerabilidade: system(), exec(), popen(), passthru() e o operador crase(`). Solução: escapeshellcmd(instrução) Criptografia de chave única Na criptografia de chave única, a mesma chave pode criptografar e decriptar uma mensagem. Em geral ela executa muito mais rapidamente que outros formulários de criptografia, mas é mais difícil de ser utilizada para comunicação, porque a chave deve de alguma maneira ser transmitida de um lado para o outro sem quaisquer bisbilhoteiros sondando. Aqui é onde precisamente a criptografia de chave pública pode auxiliar. mcrypt_cbc (cipher, key, data, direction, [iv]) Modo Descrição Vetor de Inicialização (IV) ECB (electronic code book) Traduz apenas o bloco de dados fornecido. Adequado para blocos pequenos de dados que não são tão previsíveis, como outras chaves. Não utilize para texto: A alta freqüência de letras e de pontuação pode ser utilizada para quebrar a Não CBC (cipher block chaining) criptografia. Esse modo mais forte é de longe o mais adequado para a utilização com dados 3 de 5 Opt

CFB (cipher feedback) OFB (output feedback) textuais Assim como o ECB, o CFB é bastante adequado para pequenos blocos de dados. O OFB é muito semelhante ao CFB mas projetado para se comportar melhor quando encontra erros em sua entrada. Sim Sim <pre> //$my_iv = base64_encode(mcrypt_create_iv($cipher_size, MCRYPT_RAND)); </pre> define('base64_iv', '3lA/kOKFgyw='); $key = "marinha"; $cipher_size = mcrypt_get_key_size('des', 'ofb'); $iv = base64_decode(base64_iv); $senha_crypt = mcrypt_ofb(mcrypt_des, $key, 'curso adonai', MCRYPT_ENCRYPT, $iv); $senha_decrypt = mcrypt_ofb(mcrypt_des, $key, $senha_crypt, MCRYPT_DECRYPT, $iv); echo "SENHA CRIPTOGRAFADA: $senha_crypt \nsenha DECRIPTOGRAFA: $senha_decrypt\n"; Cookies criptografados Solução inadequada $visits = @$_COOKIE['visits'] + 1; setcookie('visits', $visits); <h1>você esteve aqui echo $visits vezes!</h1> 4 de 5

Solução adequada define('base64_iv', '3lA/kOKFgyw='); $iv = base64_decode(base64_iv); $key = base64_decode("nciumfirbyg="); if(isset($_cookie['visits'])) { $encrypted = base64_decode($_cookie['visits']); $visits = mcrypt_cbc(mcrypt_des, $key, $encrypted, MCRYPT_DECRYPT, $iv); else { $visits = 0; $visits += 1; $encrypted = mcrypt_cbc(mcrypt_des, $key, $visits, MCRYPT_ENCRYPT, $iv); setcookie("visits", base64_encode($encrypted)); <h1>você esteve aqui echo $visits vezes!</h1> Hashing Os algoritmos de hashing são geralmente modificações de algoritmos de criptografia de chave única que criam um text cifrado com um comprimento específico, a partir do qual não é possível reconstruir a mensagem original. $input = "Curso Adonai - QT-INFO 2011"; $hash = mhash(mhash_md5, $input); echo "Hash: ". bin2hex($hash). "<br />\n"; // 7c18b0cff692372b94e6ff78a7ad32d4 Arquivos digitalmente assinados O exemplo do livro demonstra a assinatura digital de um arquivo utilizando hash MD5 em seguida criptografa o valor resultante do hash com a chave de BLOWFISH do usuário previamente armazenada no servidor. Utilizadas as seguintes funções: mhash mcrypt_cbc 5 de 5