PHP SECURITY INTEGRANTES:



Documentos relacionados
Desenvolvimento e disponibilização de Conteúdos para a Internet

Nomes: Questão 1 Vulnerabilidade: SQL Injection (Injeção de SQL):

Fonte: - Illustration by Gaich Muramatsu

3 SERVIÇOS IP. 3.1 Serviços IP e alguns aspectos de segurança

Boas Práticas de Desenvolvimento Seguro

Segurança em Sistemas Web. Addson A. Costa

Segurança em aplicações web: pequenas ideias, grandes resultados Prof. Alex Camargo

Aplicação Prática de Lua para Web

Firewall. Alunos: Hélio Cândido Andersson Sales

FTP Protocolo de Transferência de Arquivos

Desenvolvimento de aplicação web com framework JavaServer Faces e Hibernate

Faculdade de Tecnologia SENAC Goiás. Disciplina: Gerenciamento de Rede de Computadores. Goiânia, 16 de novembro de 2014.

SERVIDOR WEB - APACHE SERVIDOR WEB - APACHE SERVIDOR WEB - APACHE 27/02/2012

(In)Segurança em Aplicações Web. Marcelo Mendes Marinho Thiago Canozzo Lahr

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza

MANUAL MIKOGO 1. VISÃO GERAL

O projeto Metasploit é um framework que foi criado em 2003 por HD Moore e é uma plataforma que permite a verificação do estado da segurança dos

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

XSS - CROSS-SITE SCRIPTING

Segurança Internet. Fernando Albuquerque. (061)

Manual do PolicyKit-kde. Daniel Nicoletti Tradução: Luiz Fernando Ranghetti

Prof. Roberto Franciscatto 4º Semestre - TSI - CAFW. Free Powerpoint Templates Page 1

Firewalls. Firewalls

Programação Web Prof. Wladimir

Ambiente Web PHP Problemas Frameworks CakePHP Symfony Zend Framework Prado CodeIgniter Demonstração O livro

Segurança de Redes. Firewall. Filipe Raulino

Ambiente Web PHP Problemas Frameworks CakePHP Symfony Zend Framework Prado CodeIgniter Demonstração

Omega Tecnologia Manual Omega Hosting

Conceitos de relação de confiança

Manual Captura S_Line

Conceitos de extensões Joomla!

Cookies. Krishna Tateneni Jost Schenck Tradução: Lisiane Sztoltz

Visão geral híbrida de Serviços Corporativos de Conectividade do SharePoint 2013

UNIVERSIDADE FEDERAL DE PELOTAS

Capítulo 5 Métodos de Defesa

Componentes de um sistema de firewall - I

FIREWALL. Prof. Fabio de Jesus Souza. Professor Fabio Souza

Forms Authentication em ASP.NET

CERTIFICADO DIGITAL ARMAZENADO NO COMPUTADOR (A1) Manual do Usuário

O atacante pode roubar a sessão de um usuário legítimo do sistema, que esteja previamente autenticado e realizar operações que o mesmo poderia.

Entrar neste site/arquivo e estudar esse aplicativo Prof. Ricardo César de Carvalho

CONTRA CONTROLE DE ACESSOS E MODULARIZADOR DE SISTEMAS

JSF - Controle de Acesso FERNANDO FREITAS COSTA

Compartilhamento de recursos de forma a racionar e otimizar o uso de equipamentos e softwares. Servidores e Workstations. Segurança é um desafio, por

ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE

Atualizado em 9 de outubro de 2007

Privacidade. <Nome> <Instituição> < >

Entendendo como funciona o NAT

Manual do Usuário. E-DOC Peticionamento Eletrônico TST

Aula 03 - Projeto Java Web

Lista de Erros Discador Dial-Up

SIMEC Sistema Integrado de Planejamento, Orçamento e Finanças

1. Introdução pág.3 2. Apresentação do sistema Joomla! pág.4 3. Acessando a administração do site pág.4 4. Artigos 4.1. Criando um Artigo 4.2.

ADOBE FLASH PLAYER 10.3 Gerenciador de configurações locais

GLADIADOR INTERNET CONTROLADA v

18/04/2006 Micropagamento F2b Web Services Web rev 00

Kaspersky Anti-Virus 2013 Kaspersky Internet Security 2013 Lista de novos recursos

Hackers. Seus dados podem ser inúteis, mas seu computador em si pode ainda ser um recurso valioso.

Tecnologias WEB Web 2.0

Prof. Roberto Franciscatto 4º Semestre - TSI - CAFW. Free Powerpoint Templates Page 1

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Satélite. Manual de instalação e configuração. CENPECT Informática cenpect@cenpect.com.br

O sistema está pedindo que eu faça meu login novamente e diz que minha sessão expirou. O que isso significa?

Manual de Utilização do PLONE (Gerenciador de página pessoal)

TUTORIAL SPRING SECURITY PROGRAMAÇÃO COM FRAMEWORKS Responsáveis: Ana Luíza Cruvinel, Maikon Franczak e Wendel Borges

WHITE PAPER CERTIFICADOS SSL

TCP/IP TCP UDP IP HTTP HTTPS FTP TFTP TELNET POP3 IMAP SMTP SNMP DHCP

Nesse artigo abordaremos os principais aspectos de instalação e uso do NTOP no Fedora Core 4.

Segurança no Plone. Fabiano Weimar dos Santos [Xiru]

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

4 O Workflow e a Máquina de Regras

Projeto de Redes de Computadores. Desenvolvimento de Estratégias de Segurança e Gerência

INTRODUÇÃO: 1 - Conectando na sua conta

Conviso Security Training Ementa dos Treinamentos

Documento de Análise e Projeto VideoSystem

Políticas de Segurança de Sistemas

Versão /10. Xerox ColorQube 9301/9302/9303 Serviços de Internet

Protocolos de Aplicação SSL, TLS, HTTPS, SHTTP

DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0


Segurança na Rede Local Redes de Computadores

Piwik Uma alternativa livre ao Google Analytics

Guia de usuário do portal de acesso SSH

Firewall. Professor: João Paulo de Brito Gonçalves Disciplina: Serviços de Redes. Campus Cachoeiro Curso Técnico em Informática

SIM, é possivel. Brasília, 24 de Março de 2015

Transcrição:

PHP SECURITY INTEGRANTES: BERNARDO GONTIJO CARLOS EDUARDO CRUZ FILIPE GUIMARÃES SCALIONI FLÁVIO AUGUSTO M. SANTIAGO HELIO JÚNIOR LUIZ BRUNO SAMPAIO CHAGAS VINÍCIUS OLIVEIRA CARMO TÚLIO LENER

SUHOSIN SUHOSIN O QUE É? Suhosin é um módulo avançado de proteção para servidores de aplicação rodando PHP, e foi desenvolvido para proteger tanto os servidores como os próprios desenvolvedores de vulnerabilidades que podem estar presentes nas aplicações desenvolvidas utilizando a plataforma e no próprio core do PHP. O módulo é compatível com instalações padrão do PHP e com os módulos disponíveis da plataforma, não apresentando problemas com outros módulos comumente utilizados, incluindo Zend Optimizer e Source Guardian. Um dos recursos mais interessantes deste módulo é a encriptação transparente de cookies e dados de sessão, evitando inúmeros ataques de session hijacking muito comuns hoje em dia na internet. O módulo também realiza inúmeros tipos de filtragem de dados em tempo real, evitando ataques DOS, SQL Injection e a execução de scripts maliciosos no servidor. Fonte: Locaweb

SUHOSIN SUHOSIN O QUE É? Por que é? O que faz? SuHosin é um projeto de Firewall embutido no PHP, sendo uma lib carregada, que usamos como um sistema de proteção para clientes e por este motivo, este faz o bloqueio na tentativa de algum tipo de ataque ao serviço. 95% das incidências passam despercebidas, pois o próprio SuHosin bloqueia o script e não o site, mantendo o serviço funcional. A pergunta chave, qual a relação do include com o SuHosin? Por exemplo, o SuHosin verificou que está sendo utilizado um include, processo este, que pode se tornar perigoso quando chama informações de outro site que você não tem controle sobre o conteúdo, assim, o SuHosin impede o uso do include, já que existe a possibilidade de que seja executado um script em seu site. Ou seja, em alguns casos, pode ocorrer invasão ao FTP de um domínio através da inserção de scripts maliciosos, gerando ataques ao usuário e até mesmo ao servidor. Fonte: http://blog.kinghost.com.br/page/3/

SUHOSIN Exemplos de configurações suhosin.executor.max_depth Define a profundidade máxima da pilha permitida pelo executor antes de parar o script. Sem essa função uma recursão infinita em um script PHP pode travar o executor PHP ou acionar o memory_limit configurado. Um valor de '0 'desabilita essa funcionalidade. suhosin.executor.include.max_traversal Define quantas'../' um nome de arquivo precisa conter para ser considerado como um ataque e parar. Um valor de "2" irá bloquear'../../ etc / passwd ', enquanto um valor de '3' vai permitir isso. A maioria das aplicações PHP deve funcionar perfeitamente com os valores '4 'ou '5'. Um valor de '0 'desabilita essa funcionalidade. suhosin.session.encrypt Flag que decide se a criptografia da sessão transparente é ativada ou não. suhosin.cookie.encrypt Flag que decide se a criptografia transparente cookie é ativada ou não. Fonte: http://www.hardened-php.net

Php_admin_flag Como mudar configurações? Executando PHP como módulo do Apache Quando usar o PHP como módulo do Apache, você pode mudar as configurações usando diretivas nos arquivos de configuração do Apache (ex.: httpd.conf ). Você precisa de privilégios "AllowOverride Options" ou "AllowOverride All" para isso. Usado para configurar diretiva de configuração booleana. Isso não pode ser usado em arquivos.htaccess. Qualquer tipo diretiva configurada com php_admin_flag não pode ser sobrescrita por diretivas.htaccess. Para limpar um valor configurado anteriormente, use o valor none. Fonte: Pós-Graduação php.net LATO SENSU - MBA EM GESTÃO DE SEGURANÇA DA INFORMAÇÃO

Php_admin_flag Exemplos de configurações? Abaixo alguns exemplos de configurações que podemos mudar com php_admin_flag display_errors - On/Off Indica de se o servidor web deve mostrar erros ou não. safe_mode - On/Off Indica se o modo de segurança está ativo ou não short_open_tag - On/Off Indica se o webserver interpreta <? como tag de iniciar script php.

PHP_ADMIN_FLAG Parâmetro utilizado para desabilitar a execução de scripts remotos no servidor web <IfModule mod_php5.c> php_value include_path ".:/usr/local/lib/php" php_admin_flag safe_mode on </IfModule> <IfModule mod_php4.c> php_value include_path ".:/usr/local/lib/php" php_admin_flag safe_mode on </IfModule> PÓS-GRADUAÇÃO LATO SENSU EM MBA EM GESTÃO DE SEGURANÇA DA INFORMAÇÃO

Frameworks MVC (Model-View-Controller)

Frameworks MVC (Model-View-Controller) OqueéMVC? Padrão de arquitetura que separa o modelo de dados, as regras de negócio e a interface com ousuário. É uma boa prática de programação, pois promove a modularização e a reutilização de código, além de permitir a troca da interface sem grandes impactos. EoquesãoFrameworksMVC? São os Frameworks que fazem uso de MVC, baseando toda sua concepção no tema.

Frameworks MVC (Model-View-Controller)

Tipos Arquitetura em Frameworks MVC Push Utilizam ações que requerem processamento e então empurram os dados na camada de visualização. Ex.: Struts, Django, Ruby on Rails, Spring. Pull Também chamada de arquitetura baseada em componentes, as ações são iniciadas na camada de visualização, que puxa os resultados de controles múltiplos, conforme necessário. Neste modelo, diversos controles podem ser envolvidos em uma única view. Ex.: Struts2, Lift, Tapesty, JBoss, Seam. Cake PHP é Push, Yii é Push & Pull

Popularidade dos Frameworks PHP Figura 1: Frameworks PHP mais populares em 2011. FONTE: http://www.php-developer.org

Tipos de Segurança aplicadas aos Frameworks MVC em PHP ACL Access Control Lists Trabalha com uma tabela onde se define o tipo de acesso de determinado usuário a um arquivo ou processo Largamente utilizado por aplicações de todos os tipos RBAC Role Based Access Control Evolução de MAC (Mandatory Access Control ) e DAC (Discretionary Access Control) Permite a definição de papéis (roles) que serão aplicados aos indivíduos Um indivíduo pode ter vários papéis, um papel várias permissões ou indivíduos As permissões pode ser aplicadas a vários papéis, assim como as operações PLUGINS Códigos pré-compilados acopláveis ao framework Fornecem funções, rotinas e afins Fácil implementação e utilização

Cake PHP Framework O CakePHP é um framework PHP que vem sendo desenvolvido rapidamente, e fornece uma arquitetura extensível para desenvolvimento, manutenção e liberação de aplicações. Utiliza desing patterns comuns como MVC e ORM (Object-Relational Mapping) no paradigma da conveniência sobre a configuração. Excelente para reduzir custos de desenvolvimento pois ajuda os desenvolvedores a escrever menos código. Projeto iniciado em 2005, deu origem a vários subprojetos. Não é uma implementação de Ruby-on-Rails para PHP, mas utiliza diversos de seus conceitos.

Yii Framework O Yii (Yes it is!) é um framework PHP baseado em components focado no desenvolvimento de aplicações web de larga escala. Contém uma extensa lista de atributos, incluindo MVC, DAO/ActiveRecord, I18N/L10N, caching, suporte a Ajax via jquery, ACL e RBAC, scaffolding, validação de inputs, widgets, eventos, temas e Web Services. Escrito completamente em LOO, é fácil de usar, extremamente flexível e extensível. Projeto inciado em 2008, com oobjetivodecorrigirerros no PRADO framework. Ganhou vida própria.

Comparativo Cake vs Yii

Isolamento O que é? Isolamento em programação significa, esconder os dados contidos em algum contexto do código. Para que serve? Serve para garantir que não haja acesso não autorizado direto ao código ou que uma vulnerabilidade encontrada em um contexto do código não seja utiliza para explorar outras partes do código. PÓS-GRADUAÇÃO LATO SENSU EM <NOME_CURSO>

Isolamento Solução Como fora de mitigar este risco são utilizados mecanismos de SandBox (caixa de areia) como Chroot jail. Chroot Jail: O comando chroot redefine o significado do diretório raiz. Podemos usar este comando para alterar o diretório raiz do processo atual para qualquer diretório. Por exemplo, se nós fazemos chroot no / tmp em um processo, a raiz ("/") no processo atual se torna / tmp. Se o processo tenta acessar um arquivo chamado / Xyz / etc, será no acesso fato de o arquivo / tmp / xyz / etc. O significado da raiz é hereditária, ou seja, todos os filhos do atual processo terá a mesma raiz que o processo pai. Usando chroot, nós podemos confinar um programa para um diretório específico, para que danos causados em um processo limita-se a esse diretório. Em outras palavras, chroot cria um ambiente no qual as ações de um processo não interfiram em outros. PÓS-GRADUAÇÃO LATO SENSU EM <NOME_CURSO>

Controle de Acesso CakePHP Funcionalidade ACL do CakePHP Uma é, basicamente, uma lista de permissões. Perceba que o ACL é a mesma coisa que autenticação. ACL é o que acontece que um usuário está autenticado. Embora os dois são geralmente usados em conjunto, ele é importante para realizar a diferença entre saber quem é (autenticação) e saber o que ele fez (ACL).

Controle de Acesso CakePHP ACL é geralmente implementado numa estrutura de árvore. Existe geralmente uma árvore de AROs e uma árvore de ACOs. Para organizar seus objetos em árvores, permissões podem ser tratadas de forma granulada.

Controle de Acesso CakePHP

Controle de Acesso Yii Access Control Filter O controle de acesso de filtro é um regime de autorização preliminar que verifica se o usuário atual pode executar a ação do controlador solicitado. A autorização é baseada em usuário, endereço IP do cliente o nome e os tipos de solicitação. Ele é fornecido como um filtro denominado "accesscontrol".

Controle de Acesso Yii class PostController extends CController { public function accessrules() { return array( array('deny', ), 'actions'=>array('create', 'edit'), 'users'=>array('?'), array('allow', ), 'actions'=>array('delete'), 'roles'=>array('admin'), array('deny', 'actions'=>array('delete'), 'users'=>array('*'),

Controle de Acesso Yii As regras de acesso são avaliadas uma a uma, na ordem em que são especificados. A primeira regra que corresponde ao padrão atual (ex. nome de usuário, funções, IP do cliente, endereço), determina o resultado autorização. Se esta regra é uma regra de permissão, a ação pode ser executada, se for uma regra de negação, a ação não pode ser executado, se nenhuma das regras coincide com o contexto, a ação ainda pode ser executado.

Controle de Acesso Yii Uma regra de acesso pode combinar os parâmetros de contexto a seguir: Acctions: especifica quais as acções desta regra encontrados. Este deve ser um array de IDs ação. Controllers: especifica que esta regra controladores encontrados. Este deve ser um array de IDs controlador. Users: especifica quais usuários desta regra encontrados. O nome do usuário atual é usado para combinar.

Autenticação PHP Autenticação e autorização são necessários para uma página da Web que deve ser limitada a certos usuários. A autenticação é verificar se alguém é quem afirmam ser.

Tipos de autenticação Autenticação por Sessão Usuário logar no sistema através de conexão HTTPS. o login e senha do usuário são validados em javascript e php é feita uma consulta no banco de dado. Caso a consulta retorne vazia, ele é redirecionado para a página de logar novamente. De outro modo, é criada uma sessão e o usuário é redirecionado para o Web Site

Autenticação PHP Autenticação por Cookies Quando o browser do cliente aceita cookies, é criado um cookie na máquina do cliente, e dentro desse cookie é armazenado o ID da sessão do cliente(é o método padrão do PHP). Autenticação CAPTCHAS Baseia na facilidade que os seres humanos têm em reconhecer padrões - Desse modo são geradas figuras distorcidas de letras e é pedido ao usuário que escreva essas letras. Através dessas verificações é possível impedir o ataque de força bruta, bem como, que programas robots (também conhecidos como bots) se passem por humanos.

Autenticação PHP Framework CakePHP e Yii - Componentes de alta perfomance que pode ser combinado com o ACL (Access Control List) para criar componentes mais complexos em níveis de acesso dentro de um site. Prevenção de cross-site scripting (XSS), cross-site request forgery (CSRF) e de adulteração de cookie.

Autenticação PHP Problemas e mitigações. Ataque de sessão O ataque de sessão explora uma vulnerabilidade na sessão do browser, que permite a um hacker não autenticado entrar em zonas do site que exigiram usuários cadastrados. Criar um controle de acesso com sessões, ao invés de cookies.

Autenticação PHP Problemas e mitigações. Ataques de PHP Injection Utilizada para se introduzir um código externo a um programa de computador. De maneira geral, o programa é inserido através de falhas de validação dos formulários. Evitar fazer um link que tenha uma variável que receba o nome de uma página web. Visto que, um atacante pode modificar o nome dessa página, e redirecionar para uma outra página que se encontra em outro servidor.

Autorização CakePHP Autorização é realizada através do componente AuthComponent que tentará verificar se as credenciais de login que você digitou são precisas, comparando-os com o que foi armazenado no seu modelo de usuário. No entanto, há momentos em que você pode querer fazer algum trabalho adicional na determinação credenciais adequadas. <?php $this -> Auth -> authorize = 'controller' ;?> Ao autorizar é definido como 'controller', é necessário adicionar um método chamado isauthorized () para seu controlador. Este método permite-lhe fazer mais algumas verificações de autenticação e, em seguida, retornar verdadeiro ou falso.

Autorização CakePHP AuthError Mude a mensagem de erro padrão quando alguém tenta acessar um objeto ou action que ele não tenha acesso. <?php $this->auth->autherror = "Desculpe, você está sem acesso!";?> AutoRedirect AuthComponent automaticamente redireciona você logo que você é autenticado. Algumas vezes você quer fazer alguma validação a mais antes de redirecionar o usuário Authorize AuthComponent tentará verificar se as credenciais de login que você digitou são precisas, comparando-os com as quais estão armazenadas no seu modelo User

AutorizaçãoYii A autenticação é sobre como verificar se a pessoa é quem diz ser. Geralmente envolve um username e uma senha, mas pode incluir outros métodos de identidade demonstrando, tal como um cartão inteligente, impressões digitais, etc Autorização é descobrir se a pessoa, uma vez identificado (ou seja autenticado), é permitido manipular recursos específicos. Este é geralmente determinada por descobrir se essa pessoa é de um papel especial que tem acesso aos recursos Yii tem um built-in de autenticação / autorização (auth) quadro que é fácil de usar e pode ser personalizado para as necessidades especiais.. Yii fornece dois tipos de gestores de autorização: CPhpAuthManager e CDbAuthManager.

AutorizaçãoYii Usando o componente do usuário, podemos verificar se um usuário está logado ou não através CWebUser: isguest, podemos entrar e sair de um usuário, podemos verificar se o usuário pode executar operações específicas chamando CWebUser: CheckAccess e podemos também obter o identificador único e outras informações de identidade persistente sobre o usuário.

AutorizaçãoYii Manipulação de resultados de Autorização Quando a autorização falhar, ou seja, o usuário não tem permissão para executar a ação especificada, um dos seguintes cenários podem acontecer: Se o usuário não está conectado e se a propriedade loginurl do componente de usuário é configurado para ser o URL da página de login, o navegador será redirecionado para a página. Note que por padrão, os pontos loginurl para o site / página de login. Caso contrário, uma exceção HTTP será exibida com o código de erro 403.

AutorizaçãoYii Se o browser é redirecionado para a página de login e o login for bem sucedido, podemos redirecionar o navegador voltar à página que causou a falha de autorização. Como sabemos o URL para essa página? Podemos obter essa informação a partir da propriedade ReturnUrl do componente do usuário. Assim, podemos fazer o seguinte para realizar o redirecionamento: Yii:: app () -> request-> redirect (Yii:: app () -> ReturnUrl usuário>);

OWASP Open Web Application Security Project OWASP - é um projeto sem fins lucrativos voltado para a melhoria na segurança aplicativos Web. A comunidade OWASP inclui corporações, organizações educacionais e indivíduos de todo o mundo. Essa comunidade trabalha para criar artigos livremente disponíveis, metodologias, documentação, ferramentas e tecnologias. Missão: Disseminar a segurança das aplicações para que as organizações e as pessoas possam tomar decisões baseadas nos verdadeiros riscos de segurança das aplicações. Todos são livres para participar do OWASP e seus materiais estão disponíveis sob a licença de software livre e aberto.

OWASP TOP 10 2010 A1 SQL Injection Agentes Qualquer um que possa inserir no sistema dados não confiáveis, incluindo usuários internos, externos e administradores. Vetores de Ataque Ataques baseados em envio de códigos ao Banco de Dados alterando completamente a lógica da instrução original ou executando comandos arbitrários. Fraqueza da Segurança Predominância Média Detectabilidade Média Falhas de Injeção são muitos comuns, principalmente em códigos antigos, são fáceis de detectar examinando o código, mas difícil através de testes. Scanners e fuzzers são grandes aliados na busca por falhas. Eu estou vulnerável? Sua aplicação valida a entrada do usuário? Utilize ferramentas de testes de penetração, como o SQLMAP; Utilize ferramentas ABIDS, como o Mod Secure do Apache. Como prevenir? A opção preferida é o uso de API de segurança, pois evita o uso de interpretadores e fornece uma interface de parâmetros; Escapar caracteres especiais; Prevenção. Toda entrada é mal intencionada até que se provem o contrário. Permita que o usuário forneça apenas o que ele precisa fornecer.

OWASP TOP 10 2010 A2 Cross-Site Scripting (XSS) Agentes Qualquer um que possa inserir no sistema dados não confiáveis, incluindo usuários internos, externos e administradores. Vetores de Ataque Ataques baseados em scripts enviados ao browser da vítima. Quase toda a fonte de dados pode ser um vetor de ataque, incluindo as internas como dados de um banco de dados. Fraqueza da Segurança Predominância Muito Difundido Detectabilidade Fácil XSS é a falha de segurança mais predominante na WEB, ocorre quando uma aplicação envia ao browser dados sem a devida validação ou escape do conteúdo. Eu estou vulnerável? Sua aplicação valida a entrada do usuário, escapa a entrada do usuário antes de enviar para a saída? Como prevenir? Escapar todo o dado não confiável a ser inserido no contexto HTML; Utilização da função em PHP htmlspecialchars utilizada para substituir os caracteres que são interpretados como HTML para suas representações reais a serem impressas no browser.

OWASP TOP 10 2010 A3 Broken Authentication and Session Management Agentes Usuários com a finalidade de roubar a conta de outros usuários, ou querendo ocultar rastros de suas ações. Vetores de Ataque Falhas no gerenciamento de autenticação ou sessão. Fraqueza da Segurança Predominância Comum Detectabilidade Média Desenvolvedores constroem gerenciamento de sessões e autenticações customizadas com falhas que comprometem a segurança do sistema. Eu estou vulnerável? Sua aplicação armazena as credenciais usando hashing ou encriptada? Os Id s estão expostas na URL? As credenciais, ID de sessão são enviadas em ambiente criptografado? Como prevenir? Associe ID s da sessão a variáveis como IP da estação, combinado com uma informação que somente aquele usuário possa validar, como por exemplo uma chave aleatória checada periodicamente.

OWASP TOP 10 2010 A4 Insecure Direct Object References Agentes Qualquer um que possa inserir no sistema dados não confiáveis, incluindo usuários internos, externos e administradores. Vetores de Ataque Um usuário autêntico muda o valor de um parâmetro que se refere diretamente a um objeto para outro objeto o qual ele não tinha autorização para acessá-lo. Fraqueza da Segurança Predominância Comum Detectabilidade Fácil Aplicações usam o atual nome ou a chave de um objeto ao gerar as páginas WEB. Estas aplicações nem sempre verificam se o usuário esta autorizado a acessá-lo. Isto resulta em uma falha de Referência Direta a Objetos Inseguros. Eu estou vulnerável? A aplicação verifica se o usuário tem autorização para acessar o recurso exato que está solicitando? Se a referência for indireta, o mapeamento para a referência direta deve ser limitada aos valores para o usuário atual. A revisão do código da aplicação pode verificar se uma ou outra abordagem foi implementada de forma segura. Como prevenir? Mais uma vez, validar toda a entrada do usuário.

OWASP TOP 10 2010 A5 Cross-Site Request Forgery (CSRF) Agentes Considere alguém que engana os seus utilizadores para que os mesmos submetam pedidos para seu website. Vetores de Ataque O atacante cria pedidos HTTP forjados e engana a vítima a submeter estes pedidos tags de imagem, XSS ou várias outras técnicas. Fraqueza da Segurança Predominância difundida Detectabilidade Fácil Esta falha tira proveito de aplicações que permitem que os atacantes possam prever todos os detalhes de uma ação particular. Uma vez que o Browser enviam cookies de sessão automaticamente, o atacante pode criar páginas web maliciosas as quais geram requisições forjadas que não são distinguíveis dos pedidos legítimos. Eu estou vulnerável? A maneira mais fácil de verificar se um aplicativo é vulnerável é verificar se cada link e formulário contém um token aleatório para cada usuário. A ferramenta da OWASP CSRF Tester pode ajudar nos testes para detectar os riscos de falha de CSRF Como prevenir? Prevenir CSRF requer a inclusão de um token aleatório no corpo ou na URL de cada requisição HTML. O CSRF Guard da OWASP pode ser usado para incluir automaticamente este tokens em sua aplicação PHP.

OWASP TOP 10 2010 A6 Security Misconfiguration Agentes Usuários, anônimos ou conhecidos, que tentem comprometer os sistema, ou disfarçar suas ações. Vetores de Ataque Acesso a contas default, falhas não corrigidas, arquivos e pastas não protegidos e etc, para ter acesso não autorizado. Fraqueza da Segurança Predominância Comum Detectabilidade Fácil Security misconfiguration pode acontecer em qualquer nível de aplicação, WEB, Framework, servidor de aplicação. Desenvolvedores e administradores de rede têm que trabalhar em conjunto para garantir que a aplicação está configurada de maneira correta e segura. Eu estou vulnerável? Você mantém uma rotina de verificação se seu ambiente esta atualizado com os últimos patches? Você desabilita tudo que não seja necessário em seu sistema/aplicação? Você faz tratamento de erros em sua aplicação, evitando que mensagens de erro com informações excedentes sejam exibidas? Como prevenir? Crie um processo para manter atualizado com as últimas atualizações e patches ; Uma arquitetura de aplicação forte que provém uma boa separação e segurança entre os componentes; Faça auditoria e execute scans periodicamente para ajudar a detectar falta de aplicação de patches e má configuração.

OWASP TOP 10 2010 A7 Insecure Cryptographic Storage Agentes Usuários que gostaria de ter acessos a dados protegidos sem autorização. Vetores de Ataque Atacantes não quebram a criptografia, eles captura cópia dos dados em texto puro, pegam chaves ou tentam acessar dados através de canais que os decifrem automaticamente. Fraqueza da Segurança Predominância Comum Detectabilidade Difícil A falha mais comum nesta área é o simples fato de não cifrar os dados que necessitam de ser cifrados. Quando a criptografia é usada, é comum encontrar a geração e armazenamento inseguro das chaves, a não rotatividade das chaves, e a utilização de algoritmos fracos. Eu estou vulnerável? Seus dados mais sensíveis estão criptografados? Somente usuários autorizados poderão acessar as cópias dos dados descriptografado? Utiliza um algoritmo de criptografia forte? Emitido por uma unidade certificadora confiável? Sua chave é protegida de acessos não autorizados? Como prevenir? Utilize algoritmos conhecidos e reconhecidamente eficazes; Utilize a função de salt no processo de codificação, que consiste em concatenar a senha original com uma constante randômica;

OWASP TOP 10 2010 A8 Failure to Restrict URL Access Agentes Usuários com acesso à rede podem enviar um pedido para a sua aplicação. Podem usuários anônimos acessar a páginas privadas ou os usuários regulares podem acessar a páginas com privilégios especiais? Vetores de Ataque Um usuário legítimo simplesmente alteram a URL para uma página privilegiada, o acesso é garantido? Usuários anônimos pode acessar páginas restritas que não estão protegidas. Fraqueza da Segurança Predominância Incomum Detectabilidade Média Aplicações nem sempre protegem as páginas convenientemente. Falha de configuração podem permitir acesso a URL indevidamente. Eu estou vulnerável? Você solicita autenticação em todas as páginas? Você checa a autorização de acesso para ter certeza da permissão do usuário? Como prevenir? Garanta que a matriz do controle de acesso é parte do negócio, da arquitetura e do design da aplicação; Garanta que todas URLs e funções de negócio são protegidas por um mecanismo de controle de acesso efetiva; Realize um teste de invasão (penetration test) antes do código entrar em produção;

OWASP TOP 10 2010 A9 Insufficient Transport Layer Protection Agentes Qualquer um que possa monitorar o tráfego de rede de seus usuários. Vetores de Ataque Monitorar o tráfego de rede dos usuários pode ser difícil mas as vezes é fácil. A dificuldade principal reside no acompanhamento do tráfego da rede adequada enquanto usuários estão acessando o site vulnerável. Fraqueza da Segurança Predominância Comum Detectabilidade Fácil As aplicações freqüentemente não protegem o tráfego de rede. Podem usar SSL/TLS durante a autenticação somente, expondo dados e ID s de sessão para interceptação. Certificados expirados ou mal configurados pode mtambém ser usados. Eu estou vulnerável? Você utiliza SSL para proteger o tráfego relativo à autenticação? Você utiliza SSL nos acessos aos dados mais críticos? O certificado de servidor foi fornecido por uma certificadora idônea e legítima? Como prevenir? Redirecione requisições Não SSL para páginas sensíveis para uma página protegida por SSL; Configure o flag Secure em todos os cookies sensíveis; Tenha certeza que seu certificado é válido, não esteja vencido ou revogado ; Back end e outras conexões também deverão usar SSL ou outra tecnologia de encriptação.

OWASP TOP 10 2010 A10 Unvalidated Redirects and Forwards Agentes Qualquer um que possa enganar seus usuários submetendo uma requisição para seu Website. Vetores de Ataque O Atacante envia um link falso para enganar a vítima. Fraqueza da Segurança Predominância Incomum Detectabilidade Fácil As aplicações freqüentemente redirecionam usuários para outras páginas, ou usam encaminhamentos internos de uma maneira similar. As vezes o destino é especificado or um parâmetro vulnerável permitindo o atacante alterar a página de destino. Eu estou vulnerável? Você utiliza parâmetros para redirecionar URL? Você checa se estes parâmetros são válidos? Como prevenir? Evite os redirecionamentos e os encaminhamentos; Se usá-los, não utilize os parâmetros do usuário para definir o destino; Se os parâmetros de destino não puderem ser evitados, assegure que o valor fornecido é válido e autorizado para o usuário.

PECL PHP Extension Community Library PECL é um repositório de extensões PHP, disponibilizando um diretório de todas as extensões conhecidas e facilidades para download e desenvolvimento de Extensões PHP. A PECL contém extensões em C para compilação no PHP. PECL inclui módulos para parsing de XML, acesso a banco de dados adicionais, parsing de e-mail, embutindoperl ou Python em scripts PHP e ainda para compilação de scripts PHP. PECL Filter Esta extensão serve para validar e filtrar dados vindos de alguma fonte insegura, como uma entrada do usuário. Funções da Filter filter_has_var- Verifica se a variável é de um especificado tipo existente filter_id- Retorna o ID de um dado nome de filtro filter_input_array- Obtem variáveis externas e opcionalmente as filtra filter_input- Obtem a específica variável externa pelo nome e opcionalmente a filtra filter_list- Retorna a lista de todos filtros suportados filter_var_array- Obtêm múltiplas variáveis e opcionalmente as filtra filter_var- Filtra a variável com um especificado filtro

PECL Filter Filtros Existentes

Biblioteca OWASP ESAPI O que é a ESAPI? É um framework composto por diversas bibliotecas de códigos aberto que podem ser adotadas para melhorar a segurança de aplicações. Desenvolvido pelo OWASP inicialmente para Java, foi posteriormente portado para outras linguagens como.net e PHP. Premissas Básicas: Segurança não e um evento único: Deve ser aplicado e aprimorado constantemente. Processo de desenvolvimento: Uma iniciativa de codificação segura deve abordar todos os estágios do ciclo de vida de um software. Tratar o problema na raiz Onde o esforço e o custo de correção são menores.

Biblioteca OWASP ESAPI

Biblioteca OWASP ESAPI

Tratando Configuração de Segurança da Aplicação

Vantagens do Uso da Biblioteca ESAPI-PHP ESAPI-PHP x OWASP Top Ten OWASP Top Ten OWASP ESAPI-PHP

Vantagens do Uso da Biblioteca ESAPI Potencial de redução de custos da organização com a ESAPI

Prós/Contras do Uso da Biblioteca ESAPI-PHP Prós Contras Incluem o baixo acoplamento entre ESAPI e suas próprias implementações, auxilia no reuso e integração dos controles de segurança para desenvolver aplicações seguras. Incluem a necessidade de os desenvolvedores entenderem como chamar as funções ESAPI com os parâmetros exigidos pela sua organização e / ou aplicação, existe a necessidade de criar processos que vão alem do código fonte da aplicação, envolvendo: Análise de riscos de segurança de aplicações Web Processo de codificação segura.

Bibliografia http://en.wikipedia.org/wiki/comparison_of_web_application_frameworks#php_2 http://php-thoughts.cubedwater.com/2008/my-findings-in-yii-and-comparisons-to-cakephp/ http://www.marcuscavalcanti.net/blog/2009/04/09/primeiras-impressoes-sobre-o-yiiframework/ http://www.slideshare.net/phprio/yii-web-programming-framework http://book.cakephp.org/view/879/beginning-with-cakephp http://www.yiiframework.com/ http://www.phpframeworks.com/index.php http://www.php-developer.org/most-used-php-framework-the-popular-top-7-list-in-year-2011/ http://www.hiddenpixels.com/designer-and-developer-resources/php-frameworks/ http://www.yiiframework.com/doc/guide/1.1/pt/basics.controller http://www.yiiframework.com/doc/guide/1.1/pt/topics.auth http://www.ibm.com/developerworks/br/library/os-php-cake2/section5.html http://www.ibm.com/developerworks/br/library/os-php-cake2/ http://book.cakephp.org/pt/view/1242/lista-de-controle-de-acesso http://book.cakephp.org/view/396/authorize http://www.webdevelopment2.com/cakephp-auth-component-tutorial-2/ http://webmanufactory.blogspot.com/2011/02/authorization-in-cakephp.html