Segurança em php

Post on 24-Jul-2015

39 views 0 download

Transcript of Segurança em php

Segurança em PHPFlávio Augusto da Silveira

Autor Importado
- Conceitos básicos de segurança- A idéia é pegar seu conhecimento de PHP e adicionar um pouco mais de preocupação quanto a segurança. Vamos passar por alguns pontos e exemplos onde meu desejo é dar um gatilho na cabeça das pessoas. Não necessáriamente explicar profundamente, mas plantar a curiosidade.- Vamos comentar segurança na vida, em desenvolvimento, na internet, no php e banco de dados

Flávio Silveira

• Análise e Desenvolvimento

• Tecnologia e Pessoas

• Games

• Comunidade e Livre conhecimento

Segurança

Autor Importado
SEGURANÇA DE MANEIRA GERAL- O que é segurança para cada um de nós? Segurança é vida- Quando vc entra em um lugar vc procura a saída de emergência?- Vc sai com o carro sem dar manutenção ?- Você passa por uma rua escura ?Computador- você tem backup ? Backup no mesmo HD não vale

Preguiça

Autor Importado
NO DESENVOLVIMENTO- Um dos maiores problemas :: PreguiçaPorque? - Retrabalho- Cansado de não conseguir / Segunda eu arrumo

Postura de defesa

• Usuário logado Vs. Usuário não logado

• Filtros

• Limites

• Erros

Autor Importado
- Devemos adotar uma Postura de defesa- A gente costuma se preocupar sempre com o usuário logado, e muitas vezes esquece do usuário ilegítimo, vc não passa na tela de login, mas com conhecimento de urls internas acessa o produto.- Falte de filtro de dados : Preguiça : Apenas no front, apenas no back, no banco de dados- Limitar acessos- Exibição de erros

Segurança em internet

Autor Importado
- Interceptadores: Web é transmissão de informação, geralmente entre um servidor e um cliente- Servidores mal configurados podem vazar informação

• SSL / TLS

• Certificados

Autor Importado
- HTTPS ::- é o HTTP Seguro, um HTTP com algoritmos criptografados- Criptografia- Criptografias :: SSL : é o mais usado :: 9 passos (Client Hello, Server Hello)TLS : baseado no SSL- Autenticidade ::Certificados, aceite de certificados

Como configurar bem um servidor?

Autor Importado
- Como configurar bem um servidor?- Coisa de infra-estrutura?Conhecer o local onde vc deixa seus filhos, seus cachorros. Ao menos o mínimo- Usuário não pode executar o que bem entender no servidorQual o usuário que executa no servidor quando roda um site que você acessa?Não é raro encontrar definições de servidores com root. /etc/passwd confira seu usuário.- Bloquear detalher do Telnet, Bloquear Ping
Autor Importado
- Conheça o seu servidor web, Apache, NGinX. Ambos tem uma estrutura para garantir segurança (logs, módulos, definição do local de arquivos) que é importante ser compreendida para se defender.

É seguro?

Autor Importado
- PHP é seguro ? ::- O que vocês acham?Uma linguagem por si só não pode ser considerada segura ou insegura, apesar de algumas vulnerabilidade que as vezes escapam, A segurança de maneira geral depende de todo o projeto e do código do programa. Cautela em gastos com segurança, usabilidade. Não projetar a coisa de uma maneira absurda, onde seja impagável e também não complicar demais onde não seja possível usar ele.

Estrutura do projeto

• Separar o `pode ser visto` do `ñ pode ser visto`

• Arquivos não processados

• Esconder URL

Autor Importado
- Estrutura do projeto :: - Separar o que não pode ser visto de forma alguma, do que sempre será visualizado- Arquivos que não são processados pelo servidor / TXT, INC, LOG Permissão nas pastas. A maioria dos frameworks tratam isso, mas … Zend 1 freela- Esconder URL para esconder estrutura (modrewrite, função para esconder .php pegar o request e tratar)

Register Globalswww.flaviosilveira.com?authorized=true

if ($authorized) { // Do something}

Autor Importado
- Configurar bem um servidor PHP é checar sua Configuração do PHP

Display Errors

Autor Importado
- Configurar bem um servidor PHP é checar sua Configuração do PHP- Display errors- Log Errors ERROR REPORTING

Outras

• Disable Functions

• Disable Classes

• Expose PHP

Formulários

Autor Importado
- Formulários ::- Problemas com formulários: Upload de arquivos com vírusXSS - exemplo script no adminInjeção de código ou ainda SQL Injection (exemplo a frente)

Variáveis externas

• is_int, is_object

• Register Globals

• $_REQUEST

Autor Importado
- Pensar em variáveis externas com segurança (Tipagem, Filtrar valor)- register globals Off, $_REQUEST- is_int, isset, is_numeric, is_bool, is_object

Outros

• Validar tipos de arquivos

• Captcha Vs. Captcha inverso

• Armazenamento de senhas

Autor Importado
- Validar tipos de arquivo em upload- CAPTCHA, CAPTCHA Inverso (Menos recursos)- Armazenamento de Senhas (Sites que mandam sua senha explícita, MD5, SHA1)

Banco de dados

Autor Importado
Onde existe PHP, existe banco de dados.. nõa necessáriamente mas quase sempre- Coisa de DBA?- Cuidados com Exposição dos dados de acesso.. falhas que mostram arquivos conf, inc- Bloquear acesso por IP e fazer acesso via rede interna

admin’#

SELECT * FROM users WHERE login = ‘admin’# AND...

Autor Importado
SQL InjectionQuando um usuário não autorizado roda uma Query no seu banco de dados.- Formulário de Login

Tecnologia antipirataria

Autor Importado
CONCLUSÃO- “Tecnologia anti pirataria” - Ambiente 100% seguro- Quem já se deparou com isso? O que garante esse 100% ?- Deu certo ? Esse exemplo nos demonstra que devemos sempre nos atualizar, por mais que a gente gaste e invista em segurança ele deve sempre se atualizar.
Autor Importado
Segurança nunca é assunto esgotado.. - Ler para estar atento a vulnerabilidade descobertas- Oferecer prêmios para quebras de segurança- Seguir padrões de segurança da informação (RFC 2196, ISO, PCI, OWASP)

Flávio Augusto da Silveira

- flavioaugustosilveira@gmail.com- @flaviosilveira

OBRIGADO!

Autor Importado
- Espero que tenham aprendido algo aqui comigo, vou abrir para perguntas.. Obrigado