Segurança em php

22
Segurança em PHP Flávio Augusto da Silveira

Transcript of Segurança em php

Page 1: 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
Page 2: Segurança em php

Flávio Silveira

• Análise e Desenvolvimento

• Tecnologia e Pessoas

• Games

• Comunidade e Livre conhecimento

Page 3: Segurança em php

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
Page 4: Segurança em php

Preguiça

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

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
Page 6: Segurança em php

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
Page 7: Segurança em php

• 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
Page 8: Segurança em php

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
Page 9: Segurança em php
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.
Page 10: Segurança em php

É 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.
Page 11: Segurança em php

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)
Page 12: Segurança em php

Register Globalswww.flaviosilveira.com?authorized=true

if ($authorized) { // Do something}

Autor Importado
- Configurar bem um servidor PHP é checar sua Configuração do PHP
Page 13: Segurança em php

Display Errors

Autor Importado
- Configurar bem um servidor PHP é checar sua Configuração do PHP- Display errors- Log Errors ERROR REPORTING
Page 14: Segurança em php

Outras

• Disable Functions

• Disable Classes

• Expose PHP

Page 15: Segurança em 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)
Page 16: Segurança em php

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
Page 17: Segurança em php

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)
Page 18: Segurança em php

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
Page 19: Segurança em php

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
Page 20: Segurança em php

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.
Page 21: Segurança em php
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)
Page 22: Segurança em php

Flávio Augusto da Silveira

- [email protected] @flaviosilveira

OBRIGADO!

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