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