Escolar Documentos
Profissional Documentos
Cultura Documentos
PHP A Prova de Balas
PHP A Prova de Balas
Pauta
Um pouco sobre segurana Conhecendo os meios de ataque Outros tipos de ameaa Mais alguns cuidados Perguntas
O que segurana?
Segurana baseia-se em trs pontos:
O que segurana?
Aplicaes seguras tendem a custar caro... Aplicaes no seguras tendem a custar mais caro ainda...
O que ?
Injeo de cdigo arbitrrio em uma pgina.
Como ocorre?
Geralmente atravs de brechas em formulrios onde os dados enviados ao servidor no so devidamente ltrados.
Exemplo
Exemplo
Como evitar
Existem funes prontas no PHP para ltrar strings. Utilizando-as, alm de evitar um XSS, voc garante que o usurio conseguir expressar o que realmente intentou.
Como evitar
Funes que voc pode utilizar: htmlspecialchars() htmlentities() lter_input()
Leia mais sobre XSS: http://tinyurl.com/mais-sobre-xss
SQL Injection
O que ?
Injeo de cdigo SQL arbitrrio dentro de uma consulta legtima.
Como ocorre?
Na maioria das vezes a injeo de cdigo SQL se d a partir de formulrios no ltrados, em que os dados recebidos vo diretamente para dentro da consulta.
SQL Injection
Exemplo
SQL Injection
Exemplo
1'OR1='1
SQL Injection
Exemplo
fulano'#oufulano'
SQL Injection
Como evitar
Novamente... Filtrando os dados enviados pelo usurio possvel evitar que seja injetado cdigo dentro do seu SQL.
SQL Injection
Como evitar
Funes que voc pode utilizar: addslashes() mysql_real_escape_string()
Session Hijacking
O que ?
Quando o invasor obtm acesso sesso de um usurio autenticado.
Como ocorre?
Sempre que os dados do cliente so armazenados em sesso gerado um ID. Caso algum o descubra, poder navegar pelo site como se fosse o usurio real.
Session Hijacking
Ateno...
Hoje, com as conguraes padro do PHP bem pouco provvel que voc sofra um ataque de roubo de sesso no seu site. Para tanto voc deve estar atento s seguintes conguraes:
Session Hijacking
Ateno...
session.use_cookies session.use_only_cookies
Session Hijacking
Exemplo
algumapagina.php?PHPSESSID=1234
Session Hijacking
Como evitar
Nunca cone 100% no ID de sesso recebido. Voc pode fazer algumas vericaes redudantes, como comparar o IP e o User-Agent. Em casos mais vitais voc pode sugerir ao usurio que utilize cookies, intruindo-o e falando da sua importncia para uma navegao mais segura no site.
Leia mais sobre Sess. Hijacking: http://tinyurl.com/mais-sobre-sess-hijacking
Cookie Theft
O que ?
A traduo literal Roubo de Cookie. Na verdade a literal mesmo Roubo de Biscoito. :P Trata-se capturar cookies na mquina da vtima e utiliz-los para acessar o local desejado.
Como ocorre?
O roubo de cookie pode possuir duas naturezas: XSS e vulnerabilidades no prprio browser.
Cookie Theft
Como evitar
O script que foi apresentado anteriormente no exemplo de XSS responsvel por roubar um cookie. Atualmente no so muito comuns falhas de browsers que permitam o roubo de cookies, mas no passado houveram muitos.
Cookie Theft
Como evitar
No site do PHP Security Consortium [1] voc pode consultar o resumo da newsletter da SecurityFocus [2], que possui sempre anncio de novas vulnerabilidades encontradas. A partir disso voc pode conscientizar os seus usurios caso perceba que os mesmos utilizem um browser vulnervel.
[1] http://phpsec.org/projects/vulnerabilities/securityfocus.html [2] http://securityfocus.com/vulnerabilities
O que ?
Como ocorre?
O usurio mal intencionado acessa o formulrio no qual ir tentar o ataque e utiliza um programa, estipulando uma cadeia de caracteres e um tamanho mximo para a frase. O programa ir tentar todas as combinaes possveis at que uma d certo.
Ateno...
Este tipo de ataque bastante semelhante ao Ataque de Dicionrio. A diferena que o dicionrio esgota suas possibilidades mais rpido utilizando apenas palavras existentes e senhas comuns.
Como evitar
Existem dois meios bastante comuns de evitar este tipo de ataque: limite de tentativas e limite de tempo entre uma tentativa e outra.
Rainbow Table
O que ?
Semelhante ao ataque de fora bruta, porm diretamente a um hash (md5, sha1, etc).
Como ocorre?
a mistura de um ataque de fora bruta com um ataque de dicionrio. De posse do hash, o invasor utiliza este ataque para testar combinaes que possam gerar o hash procurado at que se chegue resposta correta.
Rainbow Table
Exemplo
Caso o usurio malicioso obtenha acesso aos hashs de senha (apenas visualizar), ele ainda assim ter de descobrir a senha que est ali. O problema est em conar apenas na criptograa de hashs comuns como md5 e sha1.
Rainbow Table
Exemplo
Vamos pegar como exemplo a palavra abacaxi. O hash md5 referente 4b96d5c1ff312eea069ddc760794963d. Supondo que obtemos este hash do banco de dados, basta digit-lo no Google e em alguns segundos estamos prontos.
Rainbow Table
Exemplo
Rainbow Table
Como evitar
A tcnica mais utilizada e que reduz drasticamente a chance de este ataque dar certo, temperar suas senhas. Ao inserir uma string arbitrria antes de criptografar a senha, este ataque torna-se praticamente inefetivo. essa string arbitrria damos o nome de salt.
Rainbow Table
Como evitar
md5('rocknroll' . $senha)
Digamos que seu salt ser rocknroll. Ao aplicar a criptograa na sua string, voc dever concatenar com o seu salt.
Se a senha for abacaxi teremos o seguinte hash: 0a5cefae5c742e8a914f486db9ea45ef. E pra esse o Google no tem resposta! ;)
Leia mais sobre Rainbow Table: http://tinyurl.com/mais-sobre-rainbow-table
Password Snifng
O que ?
Este ataque baseia-se em capturar na rede um pacote descriptografado com os dados de autenticao de algum usurio.
Como ocorre?
Monitorando a rede pode-se visualizar todos os pacotes. Todas as requisies via POST e GET normalmente esto abertas visualizao.
Password Snifng
Como evitar
Proteja a sua conexo com SSL. Utilizando este protocolo voc ir assegurar que a comunicao entre o cliente e o servidor, mesmo que interceptada, no possa ser decifrada. Utilize sempre o POST (por ser uma forma mais segura) e lembre-se de sempre colocar o protocolo HTTPS.
Password Snifng
Como evitar
Voc pode tambm redirecionar o usurio para a pgina de login (o formulrio em si) sempre com HTTPS. No existe nenhuma razo tcnica para isso, apenas psicolgica. O usurio costuma sentir-se mais seguro quando est colocando sua senha em uma pgina com cadeado. :)
Leia mais sobre Snifng: http://tinyurl.com/mais-sobre-snifng
Includes
A incluso de arquivos via include() e require(), embora muito til, pode ter consequencias muito ruins se no utilizada corretamente. muito comum a incluso de arquivos recebidos via URL sem que a string seja ltrada.
Includes
Outro ponto que voc deve estar atento quanto ao uso de extenses que o seu servidor web no conhea. Evite extenses do tipo .inc. Se for faz-lo, prera algo do tipo meuarquivo.inc.php.
Includes
Funes que voc pode utilizar para ltrar os dados recebidos e evitar um ataque de XSS ou a exposio do seu cdigo: basename() le_exists()
Abuso de formulrios
Esteja sempre atento ao uso de seus formulrios. O maior erro que voc pode cometer colocar os possveis e-mails dentro do seu formulrio. Isto abrir uma brecha em que o usurio mal intencionado poder inserir endereos arbitrrios e utilizar o seu formulrio como disseminador de SPAM.
Diretrizes
Algumas diretrizes, quando bem conguradas, podem aumentar a segurana da sua aplicao. register_globals display_errors log_errors
Exposio do phpinfo
incrvel o nmero de pginas espalhadas pela web que possuem um arquivo phpinfo.php em sua raiz. A primeira ao tomada por um usurio mal intencionado vericar a existncia desse arquivo e de variantes do seu nome como info.php, php.php, etc.
Obrigado! :)
Rafael Jaques
Site:phpit.com.br Email:rafa@php.net Twitter:@rafajaques