Beruflich Dokumente
Kultur Dokumente
V Ensol
22 de julho de 2011
Sobre mim
HTML/CSS/PHP
Letz www.letz.com.br
Boas prticas de programao Erros comuns Detalhes do PHP Tipos de ataques a sites Autenticao e autorizao Foco na implementao com PHP
V Ensol
22 de julho de 2011
Segurana de servidores
Configurao de servidores Firewalls DNS, FTP, SSH, HTTPS, DoS, IP spoofing, phising, Spam
V Ensol
22 de julho de 2011
Por que PHP? PHP surgiu de forma despretensiosa Acabou se tornando a linguagem server-side mais utilizada na web
V Ensol
22 de julho de 2011
Grandes poderes trazem grandes responsabilidades Programadores inexperientes Autodidatismo bom, mas...
Prazos apertados...
V Ensol
22 de julho de 2011
[1] http://www.computerworld.com/s/article/9215249/MySQL_Web_site_falls_victim_to_SQL_injection_attack
V Ensol
22 de julho de 2011
Sony
V Ensol
22 de julho de 2011
Vrios rgos pblicos tiveram seu site atacado Portal Brasil, Presidncia, Senado, Receita Federal, IBGE, entre outros Ataques de DoS, defacements e alguns roubos de dados
V Ensol
22 de julho de 2011
V Ensol
22 de julho de 2011
Configuraes do PHP
register_globals
Variveis globais so criadas automaticamente a partir de parmetros GET, POST, cookies, sesses, etc. Desabilitado por padro a partir do PHP 4.2 Depracated no PHP 5.3
V Ensol
22 de julho de 2011
Tratamento de erros
log_errors: fazer log dos erros em arquivo error_log: arquivo onde ser feito log
V Ensol
22 de julho de 2011
Manipulao de erros
set_error_handler()
set_exception_handler()
V Ensol
22 de julho de 2011
set_error_handler()
V Ensol
22 de julho de 2011
V Ensol
22 de julho de 2011
Programao defensiva
Prevenir melhor do que remediar A internet no um lugar amigvel Um plano B pode salvar a sua vida (seu emprego, sua reputao, etc.) Pense sempre em minimizar os riscos
V Ensol
22 de julho de 2011
KISS
Keep It Simple, Stupid Evite a complexidade desnecessria Abra mo da esperteza em prol da segurana
V Ensol
22 de julho de 2011
KISS
V Ensol
22 de julho de 2011
Regra de Ouro
Toda entrada deve ser filtrada e toda sada deve ser escapada
V Ensol
22 de julho de 2011
Filtro e Validao
Voc est recebendo o que est esperando receber? Trate todo o input da sua aplicao
V Ensol
22 de julho de 2011
Validao x Filtro
CPF
filtro/sanitizing
241.775.842-31
validao
24177584231
V Ensol
22 de julho de 2011
Funes para tratar o input usando vrios tipos de filtro/validao Disponvel a partir do PHP 5.2 Pode substituir totalmente o acesso aos arrays superglobais
V Ensol
22 de julho de 2011
filter_input
V Ensol
22 de julho de 2011
Escapando a Sada
Vem do ingls escape Nesse contexto, quer dizer que devemos converter determinados caracteres (ou sequncias)
V Ensol
22 de julho de 2011
Escapando o HTML
Escape no HTML significa, normalmente, impedir que hajam tags onde no deveria haver
Segurana em Aplicaes Web com PHP
Gedvan Dias
V Ensol
22 de julho de 2011
Escapando o HTML
V Ensol
22 de julho de 2011
V Ensol
22 de julho de 2011
SQL Injection
Consiste em tentar inserir um trecho de cdigo SQL em uma query que ser enviada a um banco de dados
V Ensol
22 de julho de 2011
SQL Injection
V Ensol
22 de julho de 2011
Exploits of a mom
V Ensol
22 de julho de 2011
SQL Injection
Lembra da regra de ouro? Ao utilizar banco de dados, as queries so dados de sada (output) da aplicao Portanto, devem ser escapadas
V Ensol
22 de julho de 2011
Para escapar os valores enviados ao banco, pode-se usar as funes de cada extenso
MySQL: mysql_real_escape_string() PostgreSQL: pg_escape_string() Em ltimo caso, pode-se usar a funo addslashes()
PDO: quote()
V Ensol
22 de julho de 2011
Bound Parameters
O valores so vinculados atravs de marcadores A prpria biblioteca faz o escape dos dados
V Ensol
22 de julho de 2011
Escape de Identificadores
Normalmente, apenas os valores precisam ser escapados Em alguns casos, tambm preciso escapar (ou filtrar) os identificadores
Nomes de tabelas e campos Nos casos onde eles vm de uma fonte externa
XSS
Cross-Site Scripting
V Ensol
22 de julho de 2011
Cross-Site Scripting
Tambm um dos tipos mais comuns de ataques Toda aplicao que exibe dados recebidos (input) corre riscos
V Ensol
22 de julho de 2011
Cross-Site Script
O atacante normalmente explorar essa falha inserindo tags e cdigo javascript no seu HTML
Tags <iframe> chamando pginas maliciosas Cdigo js para redirecionar o usurio para outras pginas Cdigo js para ler os cookies do usurio e envi-los para outros sites Cdigo js para alterar as informaes do site (defacement)
V Ensol
22 de julho de 2011
Cross-Site Scripting
V Ensol
22 de julho de 2011
Cross-Site Scripting
Demonstrao
V Ensol
22 de julho de 2011
CSRF
Cross-Site Request Forgery
V Ensol
22 de julho de 2011
CSRF
Como o nome diz, consiste em tentar forjar uma requisio de um site para outro O atacante usa a prpria vtima para fazer a requisio, sem que ela tenha conhecimento Portanto, muito difcil identificar se uma requisio legtima ou um ataque CSRF
V Ensol
22 de julho de 2011
CRSF
V Ensol
22 de julho de 2011
CSRF
V Ensol
22 de julho de 2011
GET x POST
Antes de tudo
Entenda a diferena entre GET e POST Funcionamento Objetivos Saiba quando usar cada um
V Ensol
22 de julho de 2011
GET
V Ensol
22 de julho de 2011
POST
V Ensol
22 de julho de 2011
GET
No use o GET para realizar operaes* Nada que v modificar os seus dados Dessa forma, os ataques CSRF via GET no causaro nenhum dano
V Ensol
22 de julho de 2011
Normalmente, o usurio recebe o link por email Nesses casos, o link deve conter um cdigo gerado aleatoriamente
POST
Entretanto, ainda estamos vulnerveis a ataques CSRF via POST Uma soluo utilizar tokens na sesso
Os tokens so gerados de forma aleatria So armazenados na sesso e includos no formulrio Ao receber a requisio, os tokens da sesso e do POST so comparados
V Ensol
22 de julho de 2011
POST
Incluir um tempo de expirao para os tokens Validar o cabealho HTTP_REFERER (embora no seja 100% confivel)
V Ensol
22 de julho de 2011
Request Spoofing
V Ensol
22 de julho de 2011
Request Spoofing
Request Spoofing a tentativa de manipular requisies de alguma forma A forma mais simples alterar manualmente os parmetros em uma URL Tambm possvel alterar os elementos de um formulrio
Modificar atributos (maxlength, disabled, readonly, name, value) Inserir ou remover elementos
V Ensol
22 de julho de 2011
Request Spoofing
Para alterar um formulrio, basta simplesmente salvar a pgina no seu computador e edit-la Ou utilizar ferramentas como o Firebug, que permite editar todo o HTML Outras ferramentas permitem at executar cdigos javascript de terceiros Observao
A sada que voc gera na aplicao (HTML + CSS + Javascript) no mais sua, do cliente
V Ensol
22 de julho de 2011
Request Spoofing
Pode ser feito na linha de comando, com o comando telnet, por exemplo Pode-se criar um script em qualquer linguagem que se conecta ao socket do servidor web Existem vrias outras formas
O HTTP um padro aberto e sua aplicao deve estar pronta para isso
Segurana em Aplicaes Web com PHP
Gedvan Dias
V Ensol
22 de julho de 2011
Request Spoofing
V Ensol
22 de julho de 2011
Arquivos
V Ensol
22 de julho de 2011
Exposio de Cdigo
Deve-se evitar arquivos PHP com extenso diferente de .php (ex: .inc)
Ou deve-se ter certeza que esto fora da raiz web Ou que o Apache est configurado corretamente para execut-los e no exibi-los
V Ensol
22 de julho de 2011
Incluso de Arquivos
V Ensol
22 de julho de 2011
Command Injection
escapeshellcmd escapeshellarg
V Ensol
22 de julho de 2011
Autenticao e Autorizao
V Ensol
22 de julho de 2011
Autenticao
o processo de identificar um usurio Ou seja, verificar se a pessoa que est acessando corresponde ao seu usurio Dependendo de sua aplicao, considere o uso do protocolo HTTPS para a autenticao
V Ensol
22 de julho de 2011
Autorizao
Tambm chamado de controle de acesso Consiste em determinar se o usurio est autorizado a acessar um determinado recurso
Normalmente, as informaes de autorizao ficam na sesso Para processos crticos, considere fazer uma nova autenticao
Segurana em Aplicaes Web com PHP
Gedvan Dias
V Ensol
22 de julho de 2011
Finalizando...
V Ensol
22 de julho de 2011
Dicas finais
Crie o hbito de programar de forma segura Em uma equipe, todos os programadores devem ter os conceitos bsicos em mente Estabelea uma poltica de segurana previamente Esteja atualizado
V Ensol
22 de julho de 2011
OWASP
Padres relacionados a segurana Levantamento sobre vulnerabilidades e ataque Tecnologias e ferramentas Notcias, etc.
V Ensol
22 de julho de 2011
Livros
V Ensol
22 de julho de 2011
Links
V Ensol
22 de julho de 2011
Obrigado!
gedvan@gmail.com - @gedvan
V Ensol
22 de julho de 2011