- 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)
- 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)