Seminário PHP em Porto Alegre. Traits no PHP 5.4: muito além da herança
Seguranca Em Php
-
Upload
campus-party-brasil -
Category
Technology
-
view
1.360 -
download
3
Transcript of Seguranca Em Php
![Page 1: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/1.jpg)
SEGURANÇA EM PHPAugusto Pascutti
Friday, January 29, 2010
![Page 2: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/2.jpg)
Augusto Pascutti
4 anos de experiência
Zend Certified Engineer
Co-Fundador PHPSP
Host PHPSPCast
Habari,CakePHP
Friday, January 29, 2010
![Page 3: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/3.jpg)
Segurança
Friday, January 29, 2010
![Page 4: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/4.jpg)
Princípios
Se mantenha a eles e você terá:
Um usuário feliz
Um patrão feliz
Finais de Semana e quem sabe férias
Friday, January 29, 2010
![Page 5: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/5.jpg)
Segurança é ...
Friday, January 29, 2010
![Page 6: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/6.jpg)
como um ogro ...
Friday, January 29, 2010
![Page 7: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/7.jpg)
Que são como cebolas !
Friday, January 29, 2010
![Page 8: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/8.jpg)
Segurança em camadas
Segurança nunca é demais
Segurança em profundidade
Aplique camadas de segurança em tudo que puder
Não conte com a bondade no mundo
Friday, January 29, 2010
![Page 9: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/9.jpg)
Informação Confidencial
Friday, January 29, 2010
![Page 10: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/10.jpg)
Informação Confidencial
Classifique tudo que for sensível
Impeça o acesso a essa informação
Lei do menor privilégio
Se o usuário não precisa ver, não deixe.
Friday, January 29, 2010
![Page 11: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/11.jpg)
Segurança x Usabilidade
Shozu.com
Friday, January 29, 2010
![Page 12: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/12.jpg)
Segurança x Usabilidade
reCaptcha
Friday, January 29, 2010
![Page 13: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/13.jpg)
Segurança x Usabilidade
Procure implementar segurança transparente ao usuário
Se não for possível:
Pense no Risco e na Usabilidade
Tenha em mente que dependemos de usuários felizes
NUNCA esqueça da usabilidade
Friday, January 29, 2010
![Page 14: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/14.jpg)
Segurança x Usabilidade
Qual o animal da figura ?
Friday, January 29, 2010
![Page 15: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/15.jpg)
Vigie sempre
Nunca confie no usuário
Nunca confie em outras aplicações
Nunca confie.
Mantenha registro da onde, de quem e quando a informação for gerada
Friday, January 29, 2010
![Page 16: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/16.jpg)
Filtre o INPUT
Identifique o input
Filtre o input
Friday, January 29, 2010
![Page 17: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/17.jpg)
Identificando Input
O input pode vir de diversos lugares
Formulário
Outra aplicação
Sistema
Friday, January 29, 2010
![Page 18: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/18.jpg)
Filtrando
Friday, January 29, 2010
![Page 19: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/19.jpg)
Filtrando
Friday, January 29, 2010
![Page 20: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/20.jpg)
Filtrando
Friday, January 29, 2010
![Page 21: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/21.jpg)
Filtrando
Friday, January 29, 2010
![Page 22: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/22.jpg)
Filtrando
Friday, January 29, 2010
![Page 23: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/23.jpg)
Filtrando
Friday, January 29, 2010
![Page 24: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/24.jpg)
Filtrando
Friday, January 29, 2010
![Page 25: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/25.jpg)
Filtrando
Friday, January 29, 2010
![Page 26: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/26.jpg)
Filtrando
Friday, January 29, 2010
![Page 27: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/27.jpg)
Escape o Output
O que é output ?
echo, print, sprintf
<?=
Na grande maioria, o destino é o navegador
Escapar HTML
Friday, January 29, 2010
![Page 28: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/28.jpg)
Escape o Output
Friday, January 29, 2010
![Page 29: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/29.jpg)
Escape o Output
Friday, January 29, 2010
![Page 30: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/30.jpg)
Escape o Output
Friday, January 29, 2010
![Page 31: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/31.jpg)
htmlentities()Converte TODO caractere para entidade HTML correspondente
Segundo e terceiro parâmetro são opcionais
Segundo: como as aspas (duplas e simples) seão tratadas
Padrão: ENT_COMPAT
ENT_QUOTES: Converte ambas para entidade HTML
Terceiro: encoding do output
Padrão: ISO-8859-1
Friday, January 29, 2010
![Page 32: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/32.jpg)
Escape o Output
Friday, January 29, 2010
![Page 33: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/33.jpg)
Brindes
Extensão dos arquivos sempre “.php”
Dentro do DocRoot, só o necessário
Mantenha seu código simples e encapsulado
Favoreça Orientação a Objetos
Friday, January 29, 2010
![Page 34: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/34.jpg)
TOP 10 OWASPLista de riscos de Segurança (rc1) de 2010
InjectionXSSQuebra de Autenticação e Problemas de SessõesReferências não seguras a ObjetosCSRFErros de ConfiguraçãoFalhas ao restringir acesso a URLsRedirecionamentos e Encaminhamentos não segurosMétodos de criptografia não segurosSegurança insuficiente no transporte de dados
Friday, January 29, 2010
![Page 35: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/35.jpg)
Sql Injection
O que é ?
Envio de comandos não tratados pela aplicação para o interpretador
Impacto
Toda a base de dados pode ser lida ou modificada
Pode garantir acesso ao banco de dados ou até ao Sistema Operacional
Friday, January 29, 2010
![Page 36: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/36.jpg)
Cross Site Scripting (XSS)
O que é ?
Dados do atacante são enviados ao navegador do cliente
Impacto
Roubo de sessão, de dados sensíveis, phishing
Friday, January 29, 2010
![Page 37: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/37.jpg)
Cross Site Request Forgery (CSRF)
O que é ?
O navegador é “enganado” e envia um comando a um site vulnerável
Impacto
Iniciar transações (tranferência, logout, cancelamento)
Acesso sensível a dados
Mudança de dados da conta
Friday, January 29, 2010
![Page 38: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/38.jpg)
CSRF
Friday, January 29, 2010
![Page 39: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/39.jpg)
CSRF
Friday, January 29, 2010
![Page 40: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/40.jpg)
CSRF
<img src="http://loja/comprar.php?quant=100" />
Friday, January 29, 2010
![Page 41: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/41.jpg)
CSRF
Friday, January 29, 2010
![Page 42: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/42.jpg)
CSRF
Friday, January 29, 2010
![Page 43: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/43.jpg)
CSRF
Friday, January 29, 2010
![Page 44: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/44.jpg)
Problemas de Configuração
O que é ?
Configuração de rede e do servidor de aplicação
Impacto
Acesso ao Sistema Operacional através de um problema conhecido
Acesso a dados da aplicação
Friday, January 29, 2010
![Page 45: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/45.jpg)
allow_url_fopen
Permite acesso a recursos remotos
Valor padrão: On
Aliado ao ‘allow_url_include’ (> 5.2) é muito perigoso
Friday, January 29, 2010
![Page 46: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/46.jpg)
allow_url_fopen
$conteudo = file_get_contents(“http://www.google.com”)
Friday, January 29, 2010
![Page 47: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/47.jpg)
allow_url_fopen
include “http://www.bad-bad-site.com”
Friday, January 29, 2010
![Page 48: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/48.jpg)
register_globals
Exporta índices de super globais para variáveis comuns
Impede que se identifique a origem do dado
Padrão
< 4.2: On
>4.2: Off
Friday, January 29, 2010
![Page 49: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/49.jpg)
register_globals
Friday, January 29, 2010
![Page 50: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/50.jpg)
register_globals
Friday, January 29, 2010
![Page 51: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/51.jpg)
register_globals
Friday, January 29, 2010
![Page 52: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/52.jpg)
magic_quotes_gpc
Escapa todos os dados em $_GET, $_POST e $_COOKIE
Usa addslashes() e não escape nativo do seu banco
Complica seu algoritmo de filtro
Padrão: On
Obsoleto no PHP 5.3
Removido do PHP 6
Friday, January 29, 2010
![Page 53: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/53.jpg)
display_errors
Exibe no output erros do PHP
DEVE ser usado no desenvolvimento
DEVE ser desligado na produção
Padrão: On
Friday, January 29, 2010
![Page 54: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/54.jpg)
error_reporting
Controla os níveis de erros que devem ser exibidos
Ajuda na identificação de erros e boas práticas
Recomendado: -1
Friday, January 29, 2010
![Page 55: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/55.jpg)
safe_mode
Restringe algumas funcões tidas como prejudiciais
Verifica se o dono do arquivo a ser executado é o mesmo do script em execução
Melhora a segurança
Não é suficiente
Padrão: Off
Friday, January 29, 2010
![Page 56: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/56.jpg)
Acesso a URLs Restritas
O que é?
Permitir que um usuário possa forjar uma autorização a uma URL sensível
Impacto
Permitir ações privilegiadas a qualquer pessoa
Friday, January 29, 2010
![Page 57: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/57.jpg)
Redirecionamentos Inválidos
O que é?
Enviar o usuário para uma URL não valida
Impacto
Phishing
Friday, January 29, 2010
![Page 58: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/58.jpg)
Criptografia Não SeguraO que é?
Falha na identificação de todos os dados que devem ser criptografados
Uso de criptografia não segura (md5, sha1)
Impacto
Acesso a dados sensíveis
Solução
mcrypt
Friday, January 29, 2010
![Page 59: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/59.jpg)
Transporte de dados
O que é?
Falta de segurança na troca de informações sensíveis
Impacto
Acesso a dados sensíveis
Solução
SSL ou TLS para transporte dos dados
Friday, January 29, 2010
![Page 60: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/60.jpg)
Perguntas ?
Augusto Pascutti
@augustohp
Friday, January 29, 2010
![Page 61: Seguranca Em Php](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/5560fb0ed8b42aff3f8b4e17/html5/thumbnails/61.jpg)
Referências
Essential PHP Security - Chris Chiflett - O’Reilly
http://www.owasp.org/
http://phpsp.org.br/category/phpsp/phpspcast/
Segurança em PHP - Márcio Pessoa - Novatec
Friday, January 29, 2010