• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Segurança em PHP
 

Segurança em PHP

on

  • 3,339 views

Segurança de suas aplicações em PHP

Segurança de suas aplicações em PHP

Statistics

Views

Total Views
3,339
Views on SlideShare
3,304
Embed Views
35

Actions

Likes
6
Downloads
142
Comments
2

3 Embeds 35

http://www.cpdev.com.br 24
http://www.linkedin.com 8
http://www.slideshare.net 3

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

12 of 2 previous next

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • Ótimo Augusto, estou sempre contigo na tempo real e mais uma vez te parabenizo pelo seu trabalho com a comunidade.
    Are you sure you want to
    Your message goes here
    Processing…
  • Ótima apresentação!
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Segurança em PHP Segurança em PHP Presentation Transcript

  • SEGURANÇA EM PHP Augusto Pascutti
  • Augusto Pascutti 4 anos de experiência Zend Certified Engineer Co-Fundador PHPSP Host PHPSPCast Habari,CakePHP
  • Segurança
  • 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
  • Segurança é ...
  • como um ogro ...
  • Que são como cebolas !
  • 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
  • Informação Confidencial
  • 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.
  • Segurança x Usabilidade Shozu.com
  • Segurança x Usabilidade reCaptcha
  • 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
  • Segurança x Usabilidade Qual o animal da figura ?
  • 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
  • Filtre o INPUT Identifique o input Filtre o input
  • Identificando Input O input pode vir de diversos lugares Formulário Outra aplicação Sistema
  • Filtrando
  • Filtrando
  • Filtrando
  • Filtrando
  • Filtrando
  • Filtrando
  • Filtrando
  • Filtrando
  • Filtrando
  • Escape o Output O que é output ? echo, print, sprintf <?= Na grande maioria, o destino é o navegador Escapar HTML
  • Escape o Output
  • Escape o Output
  • Escape o Output
  • 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
  • Escape o Output
  • 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
  • TOP 10 OWASP Lista de riscos de Segurança (rc1) de 2010 Injection XSS Quebra de Autenticação e Problemas de Sessões Referências não seguras a Objetos CSRF Erros de Configuração Falhas ao restringir acesso a URLs Redirecionamentos e Encaminhamentos não seguros Métodos de criptografia não seguros Segurança insuficiente no transporte de dados
  • 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
  • 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
  • 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
  • CSRF
  • CSRF
  • CSRF <img src="http://loja/comprar.php?quant=100" />
  • CSRF
  • CSRF
  • CSRF
  • 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
  • allow_url_fopen Permite acesso a recursos remotos Valor padrão: On Aliado ao ‘allow_url_include’ (> 5.2) é muito perigoso
  • allow_url_fopen $conteudo = file_get_contents(“http://www.google.com”)
  • allow_url_fopen include “http://www.bad-bad-site.com”
  • 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
  • register_globals
  • register_globals
  • register_globals
  • 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
  • display_errors Exibe no output erros do PHP DEVE ser usado no desenvolvimento DEVE ser desligado na produção Padrão: On
  • error_reporting Controla os níveis de erros que devem ser exibidos Ajuda na identificação de erros e boas práticas Recomendado: -1
  • 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
  • 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
  • Redirecionamentos Inválidos O que é? Enviar o usuário para uma URL não valida Impacto Phishing
  • Criptografia Não Segura O 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
  • 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
  • Perguntas ? Augusto Pascutti augusto@phpsp.org.br @augustohp
  • 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