Instituto de Ciências Exatas Departamento de Ciência da Computação Curso de Especialização em Gestão da Segurança da Informação e Comunicações

Tamanho: px
Começar a partir da página:

Download "Instituto de Ciências Exatas Departamento de Ciência da Computação Curso de Especialização em Gestão da Segurança da Informação e Comunicações"

Transcrição

1

2 Instituto de Ciências Exatas Departamento de Ciência da Computação Curso de Especialização em Gestão da Segurança da Informação e Comunicações MARCOS PONTES DA SILVA Java EE e a Segurança Cibernética atuando nos aplicativos web Segurança em aplicações web Brasília 2011

3 Marcos Pontes da Silva Java EE e a Segurança Cibernética atuando nos aplicativos web Segurança em aplicações web Brasília 2011

4 Marcos Pontes da Silva Java EE e a Segurança Cibernética atuando nos aplicativos web Segurança em aplicações web Monografia apresentada ao Departamento de Ciência da Computação da Universidade de Brasília como requisito parcial para a obtenção do título de Especialista em Ciência da Computação: Gestão da Segurança da Informação e Comunicações. Orientadora: Prof.ª Dr.ª Genaína Nunes Rodrigues Universidade de Brasília Instituto de Ciências Exatas Departamento de Ciência da Computação Brasília Novembro de 2011

5 Desenvolvido em atendimento ao plano de trabalho do Programa de Formação de Especialistas para a Elaboração da Metodologia Brasileira de Gestão da Segurança da Informação e Comunicações - CEGSIC 2009/ Marcos Pontes da Silva. Qualquer parte desta publicação pode ser reproduzida, desde que citada a fonte. Silva, Marcos Pontes da Java EE e a Segurança Cibernética atuando nos aplicativos web: Segurança em aplicações web / Marcos Pontes da Silva. Brasília: O autor, p.; Ilustrado; 25 cm. Monografia (especialização) Universidade de Brasília. Instituto de Ciências Exatas. Departamento de Ciência da Computação, Inclui Bibliografia. 1. Controle de acesso. 2. Código seguro 3. Vulnerabilidades. I. Título. CDU

6 Errata

7

8 Dedicatória Dedico esta monografia ao Deus único e verdadeiro, criador do céu, da terra e do mar, e de tudo que existe no universo; o qual é a fonte de toda ciência e sabedoria. Dedico também a minha esposa Magali e minhas filhas Mônica e Maiara.

9 Agradecimentos Agradeço ao Deus único e verdadeiro, a minha esposa Magali e minhas filhas Mônica e Maiara, a toda coordenação do CEGSIC-2009/2011, a minha orientadora Prof.ª Dr.ª Genaína Nunes Rodrigues, ao Prof. Dr. Jorge Henrique Cabral Fernandes, e a todos os funcionários da reitoria da universidade Z que cooperaram de algum modo comigo.

10 Quem semeia entre lágrimas, colherá com alegria. Salmo 126, verso 5, Bíblia Sagrada. Se alguém precisar de sabedoria, peça a Deus, ele dá a todos liberalmente. Epístola de S. Tiago 1, verso 5, Bíblia Sagrada. O temor do Senhor é o princípio da sabedoria, e a ciência do Santo a prudência. Provérbios 9, verso 10, Bíblia Sagrada Crê no Senhor Jesus Cristo, e serás salvo, tu e a tua casa. Atos dos Apóstolos 16, verso 31, Bíblia Sagrada

11 Lista de Figuras Figura 1: API da plataforma Java EE 5 nos contêineres (ORACLE, 2011) Figura 2: Relações entre os contêineres Java EE 6 (ORACLE, 2011) Figura 3: Arquitetura modelo 2 - MVC (KURNIAWAN, 2004) Figura 4: Código escondido não protege (GUERRA, 2008) Figura 5: Código do EJB sem proteção (GUERRA, 2008) Figura 6: Código com proteção só na fachada (GUERRA, 2008) Figura 7: Códigos que fazem muita coisa sem proteção (GUERRA, 2008) Figura 8: Código servlet AJAX sem proteção (GUERRA, 2008) Figura 9: Código de autenticação com servidor de aplicações (GUERRA, 2008) Figura 10: Código com dados sem proteção (GUERRA, 2008) Figura 11: Vulnerabilidades. Fonte: (OSVDB, 2010) Figura 12: Ataque ao sítio da UFRJ (ALMEIDA, 2011) Figura 13: Código do parâmetro visível na URL - 1 (SILVA, 2011) Figura 14: Código do parâmetro visível na URL - 2 (SILVA, 2011) Figura 15: Visões do CLASP. Adaptado de OWASP(2010) Figura 16: Mapa conceitual do software com código seguro (SILVA, 2011)... 84

12 Lista de Tabelas Tabela 1 Plano de Coleta de Dados Tabela 2 Pesquisa Sobre Segurança no Desenvolvimento de Software Tabela 3 Sumário das Entrevistas Realizadas Tabela 4 Relação: Coleta de Dados X Apêndices Tabela 5 Variáveis X Nível de Segurança... 54

13 Sumário Errata... 3 Dedicatória... 5 Agradecimentos... 6 Lista de Figuras... 8 Lista de Tabelas... 9 Sumário Resumo Abstract Delimitação do Problema Introdução Norma Institutos de Segurança Metodologia de Desenvolvimento Seguro Plataforma do Java Edição Empresarial Citações Formulação da Situação Problema Objetivos e Escopo Objetivo Geral Objetivos Específicos Escopo... 21

14 1.5 Justificativa Hipótese Organização do Trabalho Revisão de Literatura e Fundamentos Referencial Teórico Contêineres ou API Algumas Possibilidades de Risco no Controle de Acesso Referenciais Conceituais das Disciplinas do CEGSIC Referenciais Produzidos Pelos Próprios Cursistas Autenticação e Autorização em Aplicativos Web Argumentos do Pesquisador Metodologia Tipo de Pesquisa Plano da Pesquisa Pesquisa Bibliográfica Preparo do Questionário Coleta de Dados Documentação e Estruturação dos Resultados Validação e Análise dos Resultados Resultados Setor de Desenvolvimento de Aplicações A Pesquisa Discussão Sugestão de Melhorias Validade da Construção Validade Interna Validade Externa... 56

15 6 Conclusões e Trabalhos Futuros Conclusões Trabalhos Futuros Referências e Fontes Consultadas Glossário A B C D H I J M N O R S T U W X Apêndice A Ataque de Hackers A.1 Hackers vazam informações de funcionários do Exército Brasileiro A.2 Polícia Federal investiga ataques de hackers na internet A.3 Hackers atacaram as páginas de 105 sítios da web na UFRJ Apêndice B Exemplo de URL com Código Visível Apêndice C Controle de Acesso em Aplicações Java EE... 72

16 Apêndice D Demonstração de Alguns Tipos de Ataques em Código Java EE Apêndice E Processo de Desenvolvimento Seguro CLASP Apêndice F Mapa Conceitual: Desenvolvimento do Software com Código Seguro84 Apêndice G Código-fonte de Uma Aplicação Web Sem Código Seguro... 85

17 Resumo Com o desenvolvimento de novas tecnologias, ocorre também o crescimento constante de vulnerabilidades e ameaças aos sistemas de informação e comunicação. Temos então o desafio no desenvolvimento de aplicações de software seguro para a internet, também, conhecido como web. Tal desafio pode ser ilustrado pelo fato dos institutos existentes na internet, tais como OWASP Top 10 (OWASP, 2011) e SANS (2009), que divulgam constantemente sobre ataques contra vulnerabilidades em aplicações web. Segundo o SANS (2009), os ataques ultrapassam mais de 60% do total de tentativas observadas na internet. A informação é um ativo importante e valioso para os negócios da organização. Portanto, há a necessidade de proteger esse ativo de forma a garantir sua confidencialidade, integridade e disponibilidade. Neste sentido, a primeira ação que deve ser tomada em segurança da informação é estabelecer políticas e procedimentos sobre como proteger a informação. Os fatos acima mencionados motivaram essa pesquisa por meio de um estudo de caso no âmbito da APF, abordando vulnerabilidades em aplicações Java EE.

18 Abstract With the development of new technologies, there is also the growing number of vulnerabilities and threats to information systems and communications. As a result, we have the challenge in developing secure software applications, particularly for the Internet, also known as the web. Such a challenge can be illustrated by the fact that the existing institutions on the Internet, such as the OWASP Top 10 (OWASP, 2011) and SANS (2009), show constant attacks on vulnerabilities in web applications. According to the SANS (2009), the attacks exceeded more than 60% of all observed attempts on the Internet. Information is an important and valuable asset to the organization's business. Therefore, there is the need to protect this asset in order to ensure its confidentiality, integrity and availability. In this sense, the first action to be taken into information security is to establish policies and procedures to protect information. The above facts motivated this research through a case study in the Federal Public Administration (FPA), addressing vulnerabilities in Java Enterprise Edition applications.

19 1 Delimitação do Problema Introdução O tema principal deste trabalho é Java EE e a Segurança Cibernética atuando nos aplicativos web. A importância deste tema está no fato de haver ocorrido um aumento de ataques aos sistemas aplicativos web das organizações públicas e privadas. A problemática são os ataques aos aplicativos web, onde a maior ocorrência são os ataques de Injeção de SQL e XSS Cross-Site Scripting. Logo, como se desenvolve aplicativos web seguros na plataforma Java EE? A segurança da informação atua por meio de ações relacionadas à proteção das informações manipuladas por sistemas de informação. Segundo Dias (2000), os objetivos da Segurança da Informação envolvem, sobretudo, a manutenção da confidencialidade, da disponibilidade e da integridade das informações, variando de acordo com a natureza do sistema e com o nível de impacto que uma falha de segurança possa apresentar. Muitos especialistas ainda pensam que ao aplicar criptografia para proteger a integridade dos dados em um software, o mesmo torna-se seguro. Na verdade, esse software ao aplicar apenas uma das características de segurança, não pode, de fato, ser considerado seguro. A segurança de software não pode ser confundida com software seguro, isto é, apresentar características de segurança no software não garante que o mesmo seja seguro (MCGRAW, 2004). É mais barato construir software seguro do que corrigir problemas de segurança após a entrega do software como produto final, e sem mencionar os custos consequentes da falha de segurança (OWASP, 2010). Neste trabalho de monografia, com base em quatro recursos com aspectos diferentes, que estão relacionados com a Segurança da Informação e Comunicação, acredita-se que operando os mesmos em conjunto, promoverá a mitigação de riscos e vulnerabilidades nos aplicativos web. São eles: NORMA ABNT NBR ISO/IEC

20 :2005, institutos de segurança, metodologia de desenvolvimento seguro, e a plataforma Java EE Norma A Seção 12 da NORMA ABNT NBR ISO/IEC 27002:2005, referente à segurança na aquisição, desenvolvimento e manutenção de Sistemas de Informação, enfatiza as características e desafios gerais que se aplicam ao desenvolvimento de aplicações de software para o ambiente internet/web. Segundo tal norma, todos os requisitos de segurança devem ser identificados na fase de levantamento de requisitos do projeto. Deve-se garantir que os requisitos de segurança sejam identificados e acordados antes da aplicação no projeto Institutos de Segurança Estes são alguns dos institutos de segurança de renome internacional, que contribuem grandemente para a mitigação de vulnerabilidades: SANS e OWASP. Segundo o SANS (SysAdmin, Audit, NetWork, Security) Institute (SANS, 2009) em seu documento The Top Cyber Security Risks: Ataques contra [vulnerabilidades de] aplicações web constituem mais de 60% do total das tentativas observadas na Internet. Essas vulnerabilidades estão sendo amplamente exploradas para converter web sites confiáveis em web sites maliciosos, que fornecem conteúdo explorável no lado do cliente e vulnerabilidades em aplicações web.... Na lista da OWASP Top (OWASP, 2011), contém a relação dos dez maiores riscos críticos em segurança de aplicações web, onde estão relacionados riscos tais como: 1. Injection (injeção de código SQL); 2. XSS - Cross-Site Scripting (execução de código script no navegador da vítima); 3. Broken Authentication and Session Management (Falha na Autenticação e no Gerenciamento de Sessão); 4. Insecure Direct Object References (Referência insegura direta a objetos); 5. CSRF - Cross-Site Request Forgery (Força o envio de uma requisição préautenticada a um servidor web vulnerável); 6. Security Misconfiguration (configuração incorreta de segurança); 7. Insecure Cryptographic Storage (Armazenamento criptográfico inseguro); 8. Failure to Restrict URL Access (Falha na Restrição de Acesso à URL);

21 18 9. Insuficient Transport Layer Protection (Proteção da camada de transporte insuficiente); 10. Unvalidated Redirects and Forwards (Redirecionamentos e encaminhamentos não validados) Metodologia de Desenvolvimento Seguro A utilização de um modelo de processo para desenvolvimento de aplicativos de software seguro é um pré-requisito, a fim de minimizar riscos e vulnerabilidades. Um modelo de processo de desenvolvimento de software seguro bastante conhecido é o CLASP (Comprehensive, Lightweight Application Security Process) (OWASP, 2011), que é um conjunto de componentes de processo dirigido por atividade e baseado em regras, as quais articulam práticas para construção de software seguro, permitindo o ciclo de vida de desenvolvimento do software de maneira estruturada, com repetição e mensuração, especificado pela OWASP (Open web Application Security Project), um instituto mundial sem fins lucrativos (OWASP, 2011). Temos uma demonstração resumida do processo CLASP no apêndice E Plataforma do Java Edição Empresarial A plataforma do Java EE, Java Platform Enterprise Edition (ORACLE, 2011) hoje se encontra na versão 6, é um padrão para o desenvolvimento de aplicações web. É uma tecnologia que torna possível projetar, desenvolver, empacotar e implantar aplicações empresariais baseadas em componentes. A plataforma oferece um modelo multicamada distribuída, com a possibilidade de reutilização de componentes, transferência de dados feita em XML, um modelo de segurança unificado e um flexível controle transacional. O fato de ser uma especificação aberta possibilita que aplicações sejam desenvolvidas sem vínculo com nenhum fornecedor específico. Portanto, pode-se criar um único arquivo para toda uma aplicação. Ao implantá-lo em um application server (servidor de aplicações), este se encarrega de desempacotá-lo e instanciar um aplicativo web e as entidades de sua aplicação. 1.2 Citações Uma definição de software seguro:

22 Um software seguro é um software livre de vulnerabilidades, que funciona da maneira pretendida e que essa maneira pretendida não compromete a segurança de outras propriedades requeridas do software, seu ambiente e as informações manipuladas por ele (DHS, 2006) Formulação da Situação Problema Neste contexto, temos como situação problema o controle de acesso, o qual é um fator extremamente importante para a segurança de aplicações corporativas, pois caso não seja desenvolvido corretamente, a confidencialidade e a integridade das informações podem ser comprometidas. Essas são algumas das perguntas que fazem parte da situação problema: 1. Como o Java EE e a Segurança Cibernética podem atuar nos aplicativos web para mitigar vulnerabilidades? 2. Como codificar com segurança o controle de acesso? 3. Como os institutos de segurança poderão contribuir com o controle de acesso? 4. Como prevenir para que os dados não sejam acessados indevidamente? Hoje, segundo Guerra (2008), várias aplicações ainda possuem problemas no emprego do controle de acesso, deixando a aplicação vulnerável a ataques. Para explorar e entender esse problema na prática fez-se um levantamento da situação atual na Gestão de Segurança da Informação e Comunicação na universidade pública Z, com foco no nível de segurança no desenvolvimento de aplicações, o objetivo é obter um mapeamento correto na reitoria da Universidade Z, mais especificamente no setor de desenvolvimento de software da administração central (InfoTIC). O Governo Federal têm determinado que todos os órgãos públicos utilizem o software livre. Por ser uma plataforma livre e gratuita, de notoriedade mundial, a InfoTIC adotou o Java EE como uma das ferramentas para a produção de software web e corporativo. 1.4 Objetivos e Escopo Temos o objetivo de estudar algumas das diversas causas da falta de segurança nas aplicações web, e procurar alertar a todos os funcionários desenvolvedores de aplicações, sejam aplicações desktop ou para a web, da

23 20 existência de informações e técnicas para mitigar vulnerabilidades no software, fornecidas pelos institutos de segurança, os quais devem ser inseridos na codificação do software aplicativo. A verificação continuada dos institutos de segurança na web tais como OSVDB (Open Source Vulnerability Database), OWASP Top (OWASP, 2010), etc., divulgam constantemente uma lista de vulnerabilidades que ocorrem com maior frequência, auxiliando dessa forma, a prevenção contra as vulnerabilidades dos softwares. Ao desenvolver sistemas para atender o mais rápido possível às necessidades dos usuários, as funcionalidades de segurança geralmente não são priorizadas. Os usuários do sistema corporativo não têm uma percepção real da segurança do sistema e, normalmente, só descobrirão a existência de uma falha quando for tarde demais (GUERRA, 2008). Esse problema começa cedo no ciclo de desenvolvimento, pela má especificação dos requisitos de segurança. Porém, existem também os casos de mau uso, em que se especifica como o sistema deve responder na tentativa de usos não legítimos com intenções maliciosas (GUERRA, 2008). A segurança é ignorada na fase de testes, devido ao fato dos profissionais não estarem informados sobre as vulnerabilidades existentes, a fim de que verifiquem se os requisitos de segurança foram desenvolvidos corretamente (GUERRA, 2008). Devido à frequência de ataques contra as aplicações terem se tornado comum (veja anexo A), tais como, indisponibilidade, perda de integridade, perda de confidencialidade, etc., resolveu-se estudar a utilização em conjunto de quatro recursos para produção de um software seguro, como segue: a. A plataforma de programação Java EE ; b. Um modelo de processo para desenvolvimento seguro de aplicativos de software; c. Aplicar as informações e técnicas para mitigar vulnerabilidades, que estão disponíveis nos institutos de segurança; d. NORMA ABNT NBR ISO/IEC 27002:2005, Seção 12. Avalia-se a possibilidade de que a união de tais recursos, conforme o apêndice F (vide Figura 16), proporcionarem um desenvolvimento de aplicativo web seguro com codificação segura.

24 Objetivo Geral Realizar um estudo de caso para avaliar requisitos de segurança em sistemas web no setor de desenvolvimento da reitoria (InfoTIC) na universidade Z Objetivos Específicos São objetivos específicos deste estudo de caso (YIN, 2005): 1. Mostrar os principais erros cometidos no emprego do controle de acesso em plataformas Java EE, que podem comprometer a confidencialidade e a integridade das informações acessadas pela aplicação. 2. Abordar algumas formas de se criar uma solução para o controle de acesso. 3. Mostrar como inserir código seguro em aplicação web, mas também discutir a aplicabilidade e limitações dos modelos de controle de acesso em aplicações Java EE Escopo O estudo de caso está limitado ao setor de desenvolvimento e manutenção de softwares aplicativos da reitoria da Universidade Z, composta por algumas equipes de analistas de tecnologia da informação, os quais tem a missão de desenvolver novos aplicativos web, para substituir alguns dos aplicativos legados. Tal substituição decorre do fato de que esses aplicativos tornaram-se obsoletos, e conforme os casos terão suas bases de dados migradas para uma base mais atual. 1.5 Justificativa A escolha do tema da pesquisa se deve aos incidentes de segurança da informação que vêm aumentando consideravelmente ao longo dos últimos anos, e assumem as formas mais variadas, como por exemplo acesso não autorizado, infecção por vírus, ataques denial of service contra redes e sistemas, furto de informação proprietária, invasão de sistemas, fraudes internas e externas, uso não autorizado de redes sem fio, entre outras (veja anexo A). A Plataforma Java EE é utilizada para o desenvolvimento de aplicações web, e está sendo adotada pela InfoTIC como ferramenta de desenvolvimento. 1 "O nome da instituição onde foi realizada a pesquisa foi trocado por questões de segurança da informação".

25 22 A viabilidade da execução da pesquisa se deve ao fato de ser um dos membros da equipe de desenvolvimento (InfoTIC). A importância do desenvolvimento da pesquisa será a obtenção do resultado, o qual permitirá aos desenvolvedores de aplicações web em Java, o desenvolvimento seguro com codificação segura. Com base no que foi mencionado no subitem 1.3, será mostrado neste trabalho, procedimentos concisos e relevantes, para que a codificação segura possa ser feita mediante o estabelecimento de critérios e métodos para elaboração de sistemas aplicativos com segurança da informação, na reitoria da universidade Z. 1.6 Hipótese Falta conhecimento das equipes de desenvolvimento da InfoTIC sobre a maneira de usar questões de segurança da plataforma Java EE, no contexto corporativo da reitoria da Universidade Z. 1.7 Organização do Trabalho Capítulo 2 apresenta uma revisão de literatura e de fundamentos, onde são tratados os principais conceitos relacionados à codificação segura dos softwares, vulnerabilidades existentes, a escolha da plataforma Java EE como padrão para desenvolvimento de novos aplicativos, normas existentes e padrões disponíveis nos institutos de segurança na internet. Capítulo 3 apresenta a metodologia, o estudo de caso, onde obteremos as informações com capacidade de adicionar valor a processos, produtos e serviços, que serão avaliados. Capítulo 4 apresenta os resultados da pesquisa realizada por meio do estudo de caso. Capítulo 5 apresenta uma discussão em torno da segurança da Informação e dos resultados obtidos no estudo de caso. Capítulo 6 apresenta as conclusões, contribuição e trabalhos futuros, onde são mencionados os resultados da análise, as limitações e o público alvo da pesquisa. Também são sugeridos os trabalhos futuros.

26 23 2 Revisão de Literatura e Fundamentos O nome web vem do termo world wide web (www) que representa um sistema de informações mundial distribuído, no qual as informações são "ligadas" umas às outras por links de hipertexto. Desenvolvimentos mais recentes desta tecnologia têm permitido distribuir, junto com as informações, objetos e programas que realizam atividades junto ao cliente consumidor da informação. Os servidores estão ganhando novas capacidades que os tem permitido também executar programas, acessar bancos de dados corporativos e se comunicar com outros objetos da rede. O desenvolvimento de aplicações seguras no ambiente web, é o que está sendo tratado neste trabalho. Para construir software seguro é necessário o conhecimento básico dos princípios de segurança. Em virtude das limitações cronológicas, e dado o grande volume de informações sobre o assunto, os conceitos de segurança serão abordados de forma superficial, porém abrangente neste trabalho. O objetivo da segurança em aplicações é manter a confidencialidade, integridade e disponibilidade dos recursos de informação, a fim de permitir que as operações de negócios sejam bem sucedidas. Esse objetivo é alcançado por meio do emprego de controles de segurança. São propriedades de um software seguro (Braz, 2008; DHS, 2006): Disponibilidade: o software deve estar sempre operacional e acessível para os usuários autorizados sempre que necessário. Integridade: o software deve estar sempre protegido contra modificações não autorizadas. Confidencialidade: no contexto da segurança do software, confidencialidade se aplica para o próprio software e para os dados que ele manipula.

27 24 Duas propriedades adicionais associada aos usuários humanos podem ser requeridas para as entidades de software que agem como usuário, como agentes proxies e web services (DHS 2006): Responsabilização: toda ação relevante de segurança de um softwarecomo-usuário deve ser registrada e acompanhada, com atribuição de responsabilidade. Este acompanhamento deve ser possível durante e depois dos registros das ações que ocorrem. Não repúdio: a habilidade de prevenir o software-como-usuário de negar responsabilidade sobre ações desempenhadas. Existe uma diferença fundamental entre a abordagem adotada por uma equipe de desenvolvimento e a abordagem que é adotada por alguém que está interessado em atacar uma aplicação (OWASP, 2010). Uma equipe de desenvolvimento, normalmente, desenvolve uma aplicação com base naquilo que ela pretende fazer. Isso significa criar uma aplicação para executar tarefas específicas baseadas em requisitos funcionais e casos de uso documentados. Por outro lado, um hacker está mais interessado no que a aplicação pode ser levada a fazer, e partem do princípio de que "qualquer ação não expressamente proibida, é permitida". Para resolver isso, alguns elementos adicionais precisam ser integrados nas fases iniciais do ciclo de vida do software. Estes novos elementos são requisitos de segurança e casos de abuso (OWASP, 2010). É importante que as equipes de desenvolvimento de aplicações web entendam que os controles do lado cliente, como validação de entrada de dados no cliente, campos ocultos e controles de interface (combo box, radio buttons), fornecem pouco ou nenhum benefício de segurança (OWASP, 2010). Um atacante pode usar ferramentas como proxies do lado do cliente, como o OWASP WebScarab (OWASP, 2011), Burp ou ferramentas de captura de pacotes de rede, como o Wireshark, para analisar o tráfego de aplicativo e enviar requisições manipuladas, burlando todas as interfaces. Além disso, o Flash, os Applets Java e demais objetos que trabalham no lado cliente podem ser compilados e analisados em busca de falhas (OWASP, 2010). As falhas de segurança de software podem ser introduzidas em qualquer fase do ciclo de desenvolvimento de software, inclusive: Não identificar as necessidades de segurança no início; Criação de arquiteturas conceituais que possuem erros de lógica;

28 25 Usando práticas ruins de codificação que introduzem vulnerabilidades técnicas; Implantação do software de modo inapropriado; Inserção de falhas durante a manutenção ou atualização. Além disso, é importante entender que as vulnerabilidades de software podem ter um escopo muito além do próprio software. Dependendo da natureza do software, da vulnerabilidade e da infraestrutura de apoio, os impactos de uma exploração bem sucedida podem comprometer qualquer ou todos os seguintes aspectos: O software e sua informação associada; O sistema operacional dos servidores associados; O banco de dados de backend; Outras aplicações em um ambiente compartilhado; O sistema do usuário; Outros softwares que o usuário interage. 2.1 Referencial Teórico Java EE (Java Edição Empresarial) é uma plataforma de programação para servidores na linguagem de programação Java (ORACLE, 2011). Difere-se da plataforma Java Standard Edition (Java SE) pela adição de bibliotecas que fornecem funcionalidade para desenvolver software Java distribuído, tolerante a falhas e multicamada, baseada amplamente em componentes modulares executando em um servidor de aplicações. A plataforma Java EE é considerada um padrão de desenvolvimento já que o fornecedor de software (plugins, drivers, etc.) nesta plataforma deve seguir determinadas regras se quiser declarar os seus produtos como compatíveis com Java EE. Ela contém bibliotecas desenvolvidas para o acesso a base de dados, RPC (Remote Procedure Calls), CORBA, etc. Conforme Wagner e Machado (2010, p. 6), o Java possui um alto nível de segurança devido às aplicações funcionarem de forma stand Box, nenhuma aplicação burla os requisitos de segurança especificados na linguagem Java, pois elas não tem acesso diretamente ao Sistema Operacional, desta forma elas são obrigadas a pedir que a Maquina Virtual Java aloque recursos do Sistema

29 26 Operacional para a aplicação, assim essas requisições da aplicação passam pelas políticas de segurança especificadas na linguagem. No entanto, às vezes é necessária a utilização de linguagem de baixo nível para obter acesso direto ao nível de hardware. Padrões de códigos, guias de segurança, normas de codificação e orientações de segurança devem ser seguidas no intuito de evitar erros de códigofonte. Os padrões de desenvolvimento tais como: i. Facade que atua como uma camada mediadora entre a regra de negócio da aplicação e a interface gráfica, permitindo que caso regras de negócios mudem em algum determinado momento, isso não impacte na reestruturação de toda a aplicação novamente; ii. Data Access Object (DAO) que permite a separação de código destinado à manipulação de dados do banco de dados para a aplicação, assim diminuindo a interferência da estrutura do banco diretamente na aplicação desenvolvida. Testes de unidade devem ser realizados com preocupações com a segurança em mente, podendo ser utilizado o firebug para tais testes. Erros de segurança relatados em software similares serão usados como uma referência, inclusive os mencionados pelos institutos de segurança. Devido a essas características a plataforma é utilizada principalmente para o desenvolvimento de aplicações corporativas Contêineres ou API Os contêineres ficam localizados entre os componentes e os clientes, provendo serviços transparentes para ambos, incluindo serviços transacionais e pooling de recursos (veja Figuras 1 e 2).

30 27 Figura 1: API da plataforma Java EE 5 nos contêineres (ORACLE, 2011) Figura 2: Relações entre os contêineres Java EE 6 (ORACLE, 2011) A plataforma Java EE contém uma série de especificações e containers, cada uma com funcionalidades distintas: a. JDBC (Java Database Connectivity), utilizado no acesso a bancos de dados. A API permite chamar comandos SQL a partir de métodos na linguagem de programação Java. A API JDBC pode ser usada em um enterprise bean quando se tem um bean de sessão de acesso a banco de dados. Também pode ser usada a partir de um servlet ou uma página JSP para acessar o banco de dados diretamente, sem passar por um

31 28 enterprise bean. A API JDBC tem duas partes: uma interface em nível de aplicativo utilizado pelos componentes de aplicativo para acessar um banco de dados, e uma interface de provedor de serviços para anexar um driver JDBC para a plataforma Java EE. b. Servlets são utilizados para o desenvolvimento de aplicações web com conteúdo dinâmico. Ele contém uma API que abstrai e disponibiliza os recursos do servidor web de maneira simplificada para o programador. A classe servlet estende as capacidades dos servidores que hospedam aplicativos que são acessados por meio de um modelo de programação de solicitação-resposta. c. JSP (JavaServer Pages), uma especialização do servlet que permite que conteúdo dinâmico seja facilmente desenvolvido. Uma página JSP é um documento baseado em texto que contém dois tipos de texto: dados estáticos (que podem ser expressos em qualquer formato baseado em texto, como HTML, WML e XML) e elementos JSP, que determinam como a página constrói o conteúdo dinâmico. d. JTA (Java Transaction API) é uma API que padroniza o tratamento de transações dentro de uma aplicação Java. e. EJB (Enterprise JavaBeans), utilizado no desenvolvimento de componentes de software. Eles permitem que o programador se concentre nas necessidades do negócio do cliente, enquanto questões de infraestrutura, segurança, disponibilidade e escalabilidade são responsabilidades do servidor de aplicações. f. JPA (Java Persistence API) é uma API que padroniza o acesso a banco de dados através de mapeamento Objeto/Relacional dos Enterprise JavaBeans. Se o cliente termina, ou se o servidor é desligado, o gerenciador de persistência garante que os dados da entidade sejam salvos. g. JSF (JavaServer Faces) é um framework do Java EE, que contém um conjunto de componentes pré-fabricados de interface de usuário (IU) para web, possuindo um modelo de programação orientado a eventos. h. JMA (JavaMail API) envia notificações de . A API JavaMail tem duas partes: uma interface em nível de aplicativo utilizado pelos componentes de aplicativo para enviar , e uma interface de

32 29 provedor de serviços. A plataforma Java EE inclui JavaMail com um prestador de serviço que permite que os componentes do aplicativo enviem para a internet. i. JNDI (Java Naming and Directory Interface) fornece nomes e funcionalidade de diretório, permitindo que os aplicativos acessem vários nomes e serviços de diretório, incluindo nomes existentes e serviços de diretório como o LDAP, NDS, DNS e NIS. Ele fornece aplicativos com métodos para executar operações de diretório padrão, como associar atributos de objetos e busca de objetos usando seus atributos. Usando JNDI, uma aplicação Java EE pode armazenar e recuperar qualquer tipo de objeto Java, permitindo as aplicações Java EE coexistirem com muitas aplicações legadas e sistemas. Um aplicativo Java web pode ser projetado no modelo 1 ou modelo 2. O modelo 1 é para aplicativos muito pequenos, que não irão crescer em complexidade e consistem apenas em páginas JSP. Cada página JSP referencia outra página JSP, tornando a manutenção muito difícil à medida que o aplicativo cresce. A arquitetura no modelo 2 é o modelo de projeto recomendado para aplicativos de tamanhos médios e grandes, e é baseado no padrão controlador de visualização do modelo (Model View Controller, MVC). Uma arquitetura do modelo 2 (veja Figura 3) é indicada pela presença de um servlet controlador entre o browser do cliente e as páginas JSP (ou servlets que apresentam o conteúdo). Figura 3: Arquitetura modelo 2 - MVC (KURNIAWAN, 2004)

33 30 Aplicativos modelo 2 são mais flexíveis e fáceis de manter e de estender, porque as visualizações não referenciam umas às outras diretamente (KURNIAWAN, 2004). O servlet controlador modelo 2 fornece um ponto único de controle para segurança e registro (logging) e, frequentemente, encapsulam dados que chega a um formulário usável pelo back-end modelo MVC. Conforme Stair e Reynolds (2006), um software pode ser classificado em dois tipos principais: software de sistema, que controlam as operações básicas de um computador (sistema operacional, dentre outros); e software de aplicação para fins específicos, como, por exemplo, o que realiza o controle financeiro de uma empresa específica. O software de aplicação pode ser chamado simplesmente de aplicação ou aplicativo e é o foco deste trabalho. Conforme destaca Fernandes (2010), um software de aplicação, em geral, é parte de um sistema automatizado, e serve para automatizar um processo organizacional. Um software de sistema, por outro lado, automatiza um processo computacional que usualmente não teria viabilidade de ser executado por um ser humano, por exemplo, o processamento de pacotes do IP (Internet Protocol) em um dispositivo de redes de computadores Algumas Possibilidades de Risco no Controle de Acesso a. Risco 1 Código Escondido Não Garante a Proteção Alguns desenvolvedores acreditam que se numa aplicação web, ocultarem alguns elementos da interface, tais como botões, campos de texto, links, etc., de forma tal que somente o administrador do aplicativo terá acesso a esses componentes, isso trás segurança ao mesmo (GUERRA, 2008). Apesar do botão não ser exibido para outro usuário, nada impede que o mesmo acesse a URL e execute uma ação sem permissão, tal como a alteração de um parâmetro que identifica o usuário numa consulta do aplicativo (veja Figura 4).

34 31 Figura 4: Código escondido não protege (GUERRA, 2008) Temos um exemplo no apêndice B (veja Figuras 13 e 14), nas quais o usuário acessa a URL deixada por outro usuário que fez compra anteriormente num sítio de comércio eletrônico, a qual fica cacheada no navegador, e modifica o código uma ou mais vezes, para saber quais informações constam dos outros clientes. Portanto, isso não basta para garantir a segurança de acesso, é necessário também uma verificação junto ao servidor de sistemas web, se o usuário tem autorização para acessar essas informações. b. Risco 2 Código do EJB Sem Proteção Nas aplicações, o controle de acesso é tratado como uma característica funcional, de forma em que as funcionalidades que não são permitidas não estejam disponíveis no menu, e as tentativas inválidas de acesso sejam broqueadas, seria o suficiente (GUERRA, 2008). Porém, a segurança é uma característica não funcional e precisa ser considerada durante toda a arquitetura do sistema aplicativo a ser desenvolvido. Qualquer ponto de entrada possível deve ser considerado (veja Figura 5).

35 32 Figura 5: Código do EJB sem proteção (GUERRA, 2008) Não se deve deixar toda a segurança na camada web, pois os EJB são disponibilizados remotamente e podem ser acessados. Os EJB devem disponibilizar somente interfaces locais, para não serem acessados remotamente. Se o acesso remoto for necessário, as regras de controle de acesso devem ser movidas ou replicadas para a camada EJB. Todo software aplicativo deve ter sua camada de proteção, independentemente de haver outra na rede. A junção da camada de proteção da rede e dos aplicativos ajuda a diminuir as vulnerabilidades (GUERRA, 2008). c. Risco 3 Código Com Proteção Só na Fachada Essa vulnerabilidade é semelhante com a anterior (GUERRA, 2008), porém ao invés de colocar o controle de acesso na camada web, o mesmo foi colocado na fachada. Porém, algumas aplicações deixam o EJB protegido pela fachada sem configurações de segurança e abertos para acesso remoto. Dessa forma, alguém não autorizado pode acessar EJB contendo regras de negócio sem ter as credenciais para isso (veja Figura 6).

36 33 Figura 6: Código com proteção só na fachada (GUERRA, 2008) Tanto o acesso a EJB com interface remota, serviços web e mensagens JMS, devem ter na porta de entrada da aplicação, mesmo quando não seja utilizada, a obrigação do usuário ser autenticado e verificado se possui autorização para o acesso. d. Risco 4 Códigos Que Fazem Muita Coisa Sem Proteção Isso ocorre (GUERRA, 2008), quando numa aplicação web existe um servlet que pode realizar várias ações, sendo que as ações são determinadas por um parâmetro. Nas aplicações EJB, juntamente com o uso do padrão de projeto Command, onde o EJB recebe um comando como parâmetro para ser executado (veja Figura 7). Figura 7: Códigos que fazem muita coisa sem proteção (GUERRA, 2008)

37 34 Esse risco acontece quando o controle de acesso controla apenas a execução do servlet ou método, independentemente do que será executado nele. No EJB, se o usuário executar algum comando utilizando o método, então ele pode executar qualquer comando. Isso acontece por que a permissão é dada para execução do método, independente de qual comando é enviado (GUERRA, 2008). Se numa aplicação web, um mesmo servlet realiza todas as operações CRUD (Create, Read, Update, Delete) de uma determinada entidade, baseada em um parâmetro enviado chamado action. Se o usuário deve possuir acesso apenas à leitura enviando action=read, ele pode enviar action=delete para a exclusão de um registro, pois o controle de acesso é feito apenas ao servlet e não considera o parâmetro action recebido. Assim, quem acessa um, tem acesso a todos (GUERRA, 2008). e. Risco 5 Código Servlet AJAX Sem Proteção O AJAX deixa as aplicações mais interativas (GUERRA, 2008), mas deixa brecha na segurança. Esse risco acontece quando o controle de acesso é aplicado apenas para os servlets da aplicação e as funcionalidades do AJAX ficam de fora. Geralmente, os servlets AJAX nem verificam se o usuário está ou não autenticado. Como não é acessado diretamente pelos usuários, um teste funcional não detecta um problema como esse. Os servlets AJAX podem revelar dados relevantes para um próximo ataque, tais como identificadores de banco de dados. Figura 8: Código servlet AJAX sem proteção (GUERRA, 2008)

38 35 A solução está em criar um mecanismo que abranja os dois tipos de acesso na camada web ou no posicionamento do mecanismo de controle na camada de negócios (veja Figura 8). f. Risco 6 Código de Autenticação Com Servidor de Aplicações Isso acontece em aplicações desktop (GUERRA, 2008), os quais acessam servidores de aplicação, onde o controle de acesso é feito totalmente utilizando a lógica da interface. Ao proteger-se o acesso aos EJB e não deixar aberto a qualquer pessoa é criado um perfil relativo àquela aplicação que possui o acesso a tudo que qualquer usuário pode precisar. Portanto, a autenticação com o servidor de aplicações é realizada utilizando credenciais da aplicação (a aplicação se autentica) e não de seus usuários (veja Figura 9). Figura 9: Código de autenticação com servidor de aplicações (GUERRA, 2008) Tendo posse da biblioteca cliente dos EJB, um atacante pode criar uma aplicação que usa qualquer funcionalidade da forma que quiser. A senha de autenticação da aplicação estará, provavelmente, embutida em algum componente da aplicação ou em algum arquivo de configuração. Se o inimigo possui a aplicação, ele acessa qualquer coisa. A solução é implementar o controle de acesso no servidor e basear-se nas credenciais dos usuários, tendo-se o cuidado de onde são armazenadas.

39 36 g. Risco 7 Código Com Dados Sem Proteção Um grande erro cometido no controle de acesso, é controlar as permissões das funcionalidades e ignorar os dados que são acessados e manipulados. Isso ocorre quando o desenvolvedor fica preso aos mecanismos de controle de acesso fornecidos pela plataforma Java EE, cujas granularidades são métodos em EJB e URL em aplicações web. Como exemplo, temos a seguinte regra: um vendedor só pode acessar as vendas realizadas por ele. Fica complicado imaginar perfis de acesso para controlá-las (GUERRA, 2008); (veja Figura 10). Figura 10: Código com dados sem proteção (GUERRA, 2008) Concluí-se que o controle de acesso padrão do Java EE (RBAC) não é suficiente neste caso. Portanto, é necessário utilizar o RBAC com contextos em situações simples e o ABAC em situações mais complexas. É extremamente importante quando se for definir o controle de acesso em uma aplicativo: 1. levantar os requisitos de controle de acesso e escolher o modelo mais adequado para o caso; 2. escolha um local na arquitetura onde o componente de controle de acesso cubra todas as entradas possíveis da aplicação.

40 Referenciais Conceituais das Disciplinas do CEGSIC O software, conforme Holanda e Fernandes (2011, p. 10), são partes inerentes à automação dos processos de sistemas de informação e de processos da infraestrutura computacional. Se esses processos de sistemas de informação e de infraestrutura computacional falham, sejam por causas acidentais, como erro de um operador humano ou erros na programação do software, seja por causas intencionais, como ataques por um hacker, vários são os problemas que podem ser gerados. De fato, pode-se dizer que, de forma complementar aos incidentes de segurança decorrentes de falhas ou ataques do componente humano no trato da informação, a grande maioria dos demais incidentes de segurança da informação tem sua origem nas vulnerabilidades presentes no software. Um dos principais fatores causadores dessas vulnerabilidades é a codificação ingênua do software por um programador, quando o mesmo considera basicamente os cenários positivos de execução de um código, sem se preocupar com o caso de usuários maliciosos. O grande problema em relação às aplicações web, conforme Holanda e Fernandes (2011, p. 16), é que a rede de comunicações pode estar segura apenas com firewall, e controle de acesso, mas, mesmo assim, um usuário mal intencionado pode, através de entrada de dados em um formulário web, executarem vários tipos de ataques que escapam completamente ao controle da equipe de segurança em redes. O problema da segurança das aplicações web, e a dificuldade que as abordagens de segurança em redes de computadores têm para alcançar essa segurança são descritos em mais detalhes em trabalhos como Paiva e Medeiros (2008). Os institutos de segurança na web atualizam continuamente suas listas com os tipos mais frequentes de riscos, ataques e vulnerabilidades em aplicações web. Como pode ser observado no gráfico da Figura 11, disponibilizado pelo OSVDB 2, os ataques de XSS (Cross-Site Scripting) e Injeção de SQL, CSRF (Cross-site request forgery), Inclusão de arquivo, DoS e overflow vem acontecendo com freqüência ao longo dos anos. O objetivo do projeto OSVDB é fornecer informações exatas, detalhadas, atuais e de maneira imparcial sobre informações técnicas de vulnerabilidades e segurança. É um projeto open source e independente com uma base de dados 2 OSVDB Open Source Vulnerability Database

41 38 criada para auxiliar a comunidade nos assuntos relacionados à Segurança. O projeto visa promover a colaboração entre as empresas e indivíduos de maneira maior e mais aberta, eliminando redundâncias nas obras, e reduzindo as despesas inerentes com o desenvolvimento e a manutenção de vulnerabilidades internas de Bases de Dados. Figura 11: Vulnerabilidades. Fonte: (OSVDB, 2010) 2.3 Referenciais Produzidos Pelos Próprios Cursistas Autenticação e Autorização em Aplicativos Web Aplicativos web são formados por diversos recursos, como páginas dinâmicas, estáticas, imagens, downloads, uploads, processos, relatórios etc. E na maioria delas existe a necessidade de controlar o acesso dos usuários a estes recursos, restringindo-o somente para aqueles previamente identificados e autenticados. Autenticação representa a forma como o usuário prova quem realmente ele é, e a Autorização é utilizada para verificar se o determinado usuário previamente autenticado possui permissão para usar, manipular ou executar o recurso em questão. Segundo Franzini (2011), temos algumas possibilidades mostradas abaixo (das mais simples às mais sofisticadas), seus comentários e algumas referências apresentando possibilidades, documentações e tutoriais de possíveis implementações, ficando a cargo dos projetistas responsáveis pela aplicação julgar e selecionar aquela que satisfaz um determinado escopo/projeto em específico:

42 39 a. Servlet Filter A forma mais básica e rápida de implementar controle de usuários seria através da construção e configuração manual de servlet filters. Existentes desde a versão 2.3 da especificação, os filters possibilitam a interceptação, manipulação e redirecionamento do pedido HTTP antes que ele chegue ao seu destino real. Com base em sua funcionalidade, seria muito simples construir um filtro específico para o determinado contexto da aplicação fazendo o controle de acesso aos recursos da aplicação. E para aqueles que prezam a simplicidade, mas com flexibilidade, também podem usar o filter para implementar mecanismos mais elaborados e flexíveis, combinando os filters com arquivos XML. São várias as opções de implementações: Filtros para servlets (OLMOS, 2011), Utilizando Servlet Filter com JavaServer Faces (SACRAMENTO, 2011), Autenticação e Autorização sem JAAS utilizando hierarquia de Perfis de Acesso Parte I (FERNANDES, 2011). b. Phase Listener Para as aplicações escritas em JavaServer Faces, além da opção de usar servlets filters, estas podem utilizar um recurso especifico do JSF chamado de phase listener que é responsável por interceptar e oferecer mecanismos de manipulações referentes às mudanças de eventos ocorridas no ciclo de vida da especificação. Relacionado ao contexto de autenticação e autorização, ela está bem adequada a implementações de controle de usuários, oferecendo ao projetista da aplicação mais uma opção arquitetural. São várias as opções de implementações: Filtrando requisições com PhaseListener (LAZOTI, 2011), Controlando o acesso em aplicações JSF - PhaseListener (MACEDO, 2011), Login - autenticação e autorização usando JavaServer Faces (MOREIRA, 2011). c. JAAS Define um modelo padrão Java EE de regras de como a aplicação web pode definir e gerenciar controle de acesso. Baseado em especificação e implementado por todos os containers compatíveis, o JAAS é a solução 100% portável indicada pela especificação para ser usada. Nele existem diferentes níveis em opções de autenticação que são baseados na definição ROLES (*),

43 40 que são resumidamente grupos de usuários. A base de dados dos usuários credenciados pode estar em arquivos XML, bancos de dados relacionais, LDAP, etc. São várias as opções de implementações: Tutorial de JASS (VIANA, 2011), Security - Como Usar JAAS Com Tomcat 6 (PASSOS, 2011), Autenticação e Autorização: JAAS com JDBC Realm (JEVEAUX, 2011), Realm Configuration HOW-TO (ASF, 2011). d. jguard Framework proprietário construído em cima do JAAS oferecendo alguns automatismos, facilidades e integrações interessantes com alguns componentes JEE sendo um boa opção a ser considerada. e. Spring Security Um dos maiores frameworks da atualidade que oferece um leque muito amplo em recursos para se implementar autenticação e autorização. É uma solução profissional, mais difícil e complexa sendo que o framework oferece uma variedade incrível de opções arquiteturais. 2.4 Argumentos do Pesquisador O setor de desenvolvimento de aplicações corporativas (InfoTIC) da reitoria da universidade Z, nos permitiu observar e acompanhar as dificuldades durante a implementação de aplicativos web. A plataforma Java EE faz o casamento do código Java com o HTML, por meio das páginas em JSP, para o desenvolvimento de aplicações web. Neste contexto, é possível realizar operações dinâmicas, tais como fazer uma consulta no banco de dados sobre o curso e disciplinas nas quais o aluno esteja matriculado, e em poucos segundos, obter-se o resultado na janela do navegador web (browser). A utilização de uma metodologia de desenvolvimento de software seguro, é um pré-requisito para o desenvolvimento de aplicações. Porém, como os institutos de segurança alertam sobre as diversas vulnerabilidades e suas consequências, isso motivou o estudo de caso, no ambiente de trabalho, a fim de que possamos mitigar essas vulnerabilidades nos aplicativos que são desenvolvidos na plataforma Java EE.

44 41 O instituto OWASP, oferta gratuitamente um código Java que, anexado ao aplicativo web (OWASP Enterprise Security API - ESAPI), ajuda prevenir contra diversas vulnerabilidades (OWASP, 2011). No apêndice F, temos uma mapa conceitual, onde se mostra como desenvolver um software com código seguro (veja Figura 16).

45 42 3 Metodologia 3.1 Tipo de Pesquisa Esta pesquisa utiliza o método de estudo de caso com tipo de dados qualitativo, pois é descritiva. Segundo Yin (2005), o estudo de caso pode abordar aspectos qualitativos e também quantitativos. Também, segundo Yin (2005), além do seu uso para fins exploratórios, o estudo de caso pode ser aplicado para fins descritivos e para fins explanatórios, conforme a estrutura de pesquisa adotada. Conforme Yin (2005) é importante que o estudo de caso empregue mais de uma fonte de evidência para a constatação do que ocorre em determinado fato. As fontes de evidência existentes são documentos, registros em arquivos, entrevistas, observação direta, observação participante e artefatos físicos. Os sistemas aplicativos web da universidade são cliente-servidor. Quando os setores e unidades necessitam que seja desenvolvido algum sistema de aplicação, os diretores responsáveis pelas unidades enviam um memorando via para o diretor da InfoTIC, solicitando este tipo de serviço. O diretor da InfoTIC verifica quais analistas estão disponíveis para desenvolver o serviço, formando a equipe que ficará responsável pelo desenvolvimento da nova aplicação. Há também na universidade Z, sistemas isolados, que atendem interesses específicos das unidades, que foram desenvolvidos e são mantidos por funcionários terceirizados, contratados conforme interesse do diretor da unidade. Estes sistemas estão fora da responsabilidade da TIC. Será analisado o sistema corporativo SGA. O SGA (Sistema de Gestão Acadêmica) abrange somente uma unidade da universidade, ou seja, o Instituto de Economia. O sistema de aplicação será acessado e operado pela web (veja

46 43 apêndice G ). Neste apêndice está uma cópia do código-fonte, onde mostramos uma codificação sem segurança. Através deste trabalho tem-se o objetivo de estudar a forma de como desenvolver e codificar com segurança um aplicativo web, na linguagem de programação Java, utilizando os recursos seguintes: A plataforma Java EE; Uma metodologia de desenvolvimento seguro; As informações sobre vulnerabilidades que podem ser mitigadas; NORMA ABNT NBR ISO/IEC 27002:2005, referente à Seção 12. A partir desta pesquisa serão selecionados os procedimentos considerados pertinentes para elaboração de um tutorial 3, onde serão incluídos processos, procedimentos e técnicas para ajudar na análise e desenvolvimento de aplicativos com segurança da informação, utilizando-se o Java EE. Foi realizado o estudo de caso, a fim de aprofundar os conceitos sobre o tema, com a coleta de dados em campo, cujos dados coletados tiveram como fonte de evidências as entrevistas, questionários, observação direta, observação participante, e análise de documentos. A documentação neste estudo de caso são artigos em revista, na mídia de massa, e informativos de comunidade. Como ferramentas foram realizadas as anotações das evidências em um arquivo com a utilização de um editor de texto. Os questionários que foram distribuídos numa ocasião foram devolvidos em outro dia posterior. A pesquisa foi realizada no setor de análise e desenvolvimento de sistemas aplicativos corporativos (InfoTIC), da reitoria da universidade Z, junto aos analistas e programadores, os quais compõem as equipes ali existentes. 3.2 Plano da Pesquisa Pesquisa Bibliográfica Escolheu-se para a realização deste estudo de caso uma pesquisa bibliográfica, como sendo uma das fontes de evidência, que permitiu um aprofundamento sobre os conceitos envolvidos no tema, a descrição de casos e 3 Apêndices C, D e E.

47 44 suas respectivas análises e a apresentação de medidas para mitigar as vulnerabilidades nas aplicações web (veja Capítulo 2 e apêndices C e D ). A pesquisa está fundamentada em trabalhos científicos, em documentos técnicos e internet, além de outros trabalhos apresentados em congressos ou revistas especializadas, o que denota a relevância atribuída ao estudo do tema. Para tanto, procedeu-se a uma coleta de artigos e trabalhos nas áreas tanto da segurança da informação quanto da formulação e implementação de políticas de caráter público e organizacional, tais como os institutos de segurança. Restringiu-se esta pesquisa ao universo conceitual baseado no referencial teórico e na análise de casos ocorridos dentro da Administração Pública Federal, onde os dados são tratados dentro de uma premissa de realidade e atualidade (veja apêndice A ) Preparo do Questionário Devido a pouca disponibilidade de tempo, optou-se por fazer um questionário contendo dez questões ao todo, as quais trarão como resultado, o nível de conhecimento sobre segurança de software dos funcionários que fazem o desenvolvimento de aplicações web. Havia o propósito de entrevistar dez funcionários do setor de desenvolvimento Coleta de Dados 1) Qual a metodologia utilizada para o desenvolvimento do software web? 2) Quais são os critérios de segurança adotados no desenvolvimento de software web em Java EE? 3) Qual o nível de abrangência dos sistemas aplicativos web em Java EE na universidade? 4) Como são utilizados os sistemas aplicativos web em Java EE na universidade? 5) As aplicações web em Java EE podem sofrer algum tipo de ameaça? 6) Quais são os principais riscos e vulnerabilidades de uma aplicação web em Java EE? 7) Como evitar a ocorrência de um ataque de Injeção de SQL numa aplicação web em Java EE? 8) Como se faz para evitar o ataque de Cross-site scripting (XSS) numa aplicação web em Java EE?

48 45 9) O que é um desenvolvimento de software com código seguro? 10) As informações dos Institutos de segurança sobre vulnerabilidades são utilizadas nas aplicações que desenvolve? Documentação e Estruturação dos Resultados As fontes de dados foram: analistas e programadores pertencentes ao InfoTIC, revisões bibliográficas, entrevista, consulta de sitio na internet. Os dados foram armazenados em dois arquivos de planilha, sendo que uma (veja Tabela 2) contém as perguntas, o nome do funcionário entrevistado, a linguagem de programação na qual desenvolve o sistema de aplicação, e as respostas. Uma nota é atribuída a cada funcionário, conforme a resposta dada, de modo que se a resposta estiver de acordo com cada questão, se ganha 1 ponto, caso contrário 0. Na outra planilha (veja Tabela3) fica a nota total de cada funcionário entrevistado. A partir deste total de notas é realizada uma média, que corresponde ao nível de conhecimento de segurança em aplicações web Validação e Análise dos Resultados Os dados foram coletados utilizando o seguinte plano: i) Técnica: Entrevista, observação (participante), e documentos. ii) Local: InfoTIC, situado na reitoria da universidade Z. iii) Fonte: Analistas e Programadores de TI, questionário, entrevista. iv) Data: Período de 15/08/2011 até 31/10/2011. v) Hora: Entre 09:00 h até as 16:00 horas. A validação e análise dos resultados é consequência natural da coleta de dados, pois a partir das evidências documentais, resposta dos questionários e entrevistas, obteremos um resultado. O resultado irá demonstrar se a hipótese é verdadeira ou não.

49 46 4 Resultados Com o intuito de comprovar a hipótese, foi realizado um estudo de caso com a participação de quatro analistas e três programadores, os quais são funcionários do setor de desenvolvimento, sendo que somente os analistas foram capacitados no final de 2010 na plataforma Java EE 5, onde aprenderam a utilizar as ferramentas seguintes: o JDK 6, o servidor de aplicações JBoss 5, o framework JBoss-Seam 2.0, a IDE 4 Eclipse 3.4, um sistema gerenciador de banco de dados MySQL 5. O percentual de funcionários entrevistados é de 13,5% do total de funcionários da TIC. As entrevistas ocorreram em dias e horas diferentes, e demoraram aproximadamente uma hora cada uma. 4.1 Setor de Desenvolvimento de Aplicações A TIC é composta por um total de 30 analistas e 22 técnicos, sendo que somente 9 técnicos trabalham com programação e os outros 13 trabalham com infraestrutura. A administração da TIC definiu que a InfoTIC utilize o método de desenvolvimento conhecido como Processo Unificado (RUP 5 ). A TIC foi criada em meados de 2009, com funcionários já pertencentes à universidade, que agora corresponde a 11,5% dos funcionários da TIC, os quais foram admitidos através de concurso público, e tomaram posse antes de Os demais 88,5% foram admitidos através de concurso público, e tomaram posse entre fevereiro a novembro de A TIC está vinculada a uma pró-reitoria. Somente 8 analistas e mais 2 programadores trabalham com desenvolvimento em Java, outros 11 analistas e mais 4 programadores 4 IDE Integrated Development Enviroment (ambiente integrado para desenvolvimento de software). 5 RUP Rational Unified Process.

50 desenvolvem em PHP, outros 7 analistas e mais 2 programadores desenvolvem em ASP, e os 5 analistas restantes desenvolvem em outras linguagens. O percentual de funcionários que desenvolvem em Java corresponde a exatamente 19,2% dos funcionários que fazem desenvolvimento. O percentual de funcionários que desenvolvem em outras linguagens é de 80,8%. Sendo que 28,8% desenvolvem em PHP, 17,3% desenvolvem em ASP e 34,6% desenvolvem em outras linguagens tais como C, C++, JavaScript, HTML, DELPHI, Visual Basic 6, etc. Temos um sistema SGA, cujo nome do projeto é SisGestaoAcademica, o qual foi desenvolvido para web, com JavaServer Pages (JSP), ide NetBeans 6.5, jdk 6, servidor web Apache Tomcat 6 na porta 80 (veja apêndice G ). Neste apêndice está uma cópia do código-fonte, onde mostramos uma codificação sem segurança. A InfoTIC tem um total de dez equipes, sendo três equipes com desenvolvimento em Java, quatro equipes com desenvolvimento em PHP, duas equipes com desenvolvimento em ASP, e uma equipe para suporte nas outras linguagens de programação (Delphi 7, Visual Basic 6, Access, etc.). As equipes formadas em Java são: EQP01 composta de dois analistas e dois programadores; EQP02 composta de dois analistas; EQP03 composta de quatro analistas. As sete equipes restantes trabalham nas outras linguagens de programação. Por enquanto, o PHP é utilizado como linguagem principal para o desenvolvimento de aplicações web, pois as equipes nomeadas de EQP04 até EQP10, ainda não foram capacitadas na plataforma Java EE. 4.2 A Pesquisa Para realizar a pesquisa, foi feito um plano de coleta de dados, conforme pode ser visto na Tabela 1. Tabela 1 Plano de Coleta de Dados. Técnica Local Fonte Data Hora Entrevista, Observação participante, Documentação. InfoTIC (reitoria da universidade Z) Analista, Programador, Questionário, Entrevista. De 15/08/2011 até 31/10/2011 Entre as 9h até às 16h 47

51 Foram distribuídos questionários e também foram realizadas entrevistas, cujas respostas foram armazenadas num arquivo gerado por um editor de texto. Na Tabela 2 podemos ver as perguntas e respostas obtidas dos funcionários que foram entrevistados. As respostas das 10 questões estão nas colunas por funcionário. Tabela 2 Pesquisa Sobre Segurança no Desenvolvimento de Software 6 FUNC4 / FUNC5 / FUNC6 / FUNC7 / FUNC1 / ANALISTA FUNC2 / ANALISTA FUNC3 / ANALISTA RESPOSTAS ANALISTA PROGRAMADOR PROGRAMADOR PROGRAMADOR JAVA JAVA JAVA JAVA PHP PHP PHP TRIAGEM DOS TRIAGEM DOS 1 RUP RUP RUP MVC MVC REQUISISTOS REQUISISTOS NOTA LOGIN E SENHA COM CRIPTOGRAFIA MD5 LOGIN, REGISTRO DE LOG LOGIN E SENHA LOGIN E SENHA COM PERFIL DE ACESSO SEGUIR PADRÕES, TRATAR STRINGS DE CONSULTA DE BANCO DE DADOS, CUIDADO COM A SAÍDA DOS DADOS PARA EVITAR O XSS CRIPTOGRAFIA, GERENCIA DE PERMISSÕES, LOGIN CRIPTOGRAFIA, GERENCIA DE PERMISSÕES, LOGIN NOTA DIVERSOS, ALGUNS 3 LOCALIZADOS NA TODA A TODA A PARA TODA A TODA A UNIDADE, OUTROS REITORIA NÃO SABE UNIVERSIDADE E UNIVERSIDADE E UNIVERSIDADE UNIVERSIDADE ABRANGEM TODA A PÚBLICO EXERNO PÚBLICO EXERNO UNIVERSIDADE NOTA DESDE CONFORME A DEPARTAMENTOS FINALIDADE DE CADA ATÉ TODA A UM UNIVERSIDADE SIGA, SAM INTRANET OU INTERNET NÃO SABE ACESSO A ÚLTIMAS NOTÍCIAS, ACESSO OUTROS SISTEMAS ACESSO A ÚLTIMAS NOTÍCIAS, ACESSO OUTROS SISTEMAS NOTA SIM, CASO NÃO SEJA 5 SIM, INDEPENDENTE UTILIZADA ALGUMA SIM, SIM, SIM SIM SIM DA LINGUAGEM TÉCNICA DE CONSTANTEMENTE CONSTANTEMENTE SEGURANÇA NOTA INJEÇÃO DE SQL, CROSS-SITE SCRIPTING (XSS) ATAQUES DOS HACKERS ACESSO AS TABELAS DO BANCO DE DADOS, ACESSO DE UMA PÁGINA VIA GET INVASÃO AO SERVIDOR DE APLICAÇÃO DoS, SNIFFING, XSS, SQL INJECTION, FALHAS NÃO BRUTE FORCE, DDOS REVISADAS PELOO DESENVOLVEDOR DoS, SNIFFING, FALHAS NÃO REVISADAS PELOO DESENVOLVEDOR, XSS NOTA VALIDAR TODOS OS UTILIZAR PREPARED DADOS RECEBIDOS STATEMENT OU PELO APLICATIVO VIA NAMED PARAMETERS GET OU POST UTILIZAR INTERROGAÇÃO NO SQL VALIDAR O CONTEÚDO DOS CAMPOS "INPUT" FUNÇÕES NATIVAS DO BANCO DE DADOS USO DE COMPONENETES ESPECÍFICOS QUE GERENCIAM A CONEXAO COM O BANCO DE DADOS, EVITAR CONCATENAÇÃO DE STRINGS USO DE COMPONENETES ESPECÍFICOS QUE GERENCIAM A CONEXAO COM O BANCO DE DADOS, EVITAR CONCATENAÇÃO DE STRINGS NOTA O MESMO ANTERIOR COM A ATIVAÇÃO DO ESCAPE NÃO OUVIU FALAR NESSE TIPO DE ATAQUE UTILIZA O CONTENT SEGURITY POLICY DO GOOGLE NÃO SABE USA A FUNÇÃO HTMLENTITIES DO PHP NÃO SABE NÃO SABE NOTA DESENVOLVIMENTO PADRÃO MAIS CUIDADOS INFORMADOS PELOS INSTITUTOS DE SEGURANÇA DESENVOLVIMENTO BASEADO NUMA METODOLOGIA SEGURA COMO O OWASP MINIMIZAR TODAS AS NÃO SABE VULNERABILIDADES SEGUIR PADRÕES E RECOMENDAÇÕES DE SEGURANÇA E CONHECER BEM OS RECURSOS DA LINGUAGEM DE PROGRAMÇÃO QUE UTILIZA 48 DESENVOLVIMENTO DESENVOLVIMENTO OBJETIVO, EVITAR OBJETIVO, EVITAR CONEXÕES ABERTAS, CONEXÕES ABERTAS, SERVIDOR COM BOA SERVIDOR COM BOA INFRAESTRUTURA DE INFRAESTRUTURA DE SEGURANÇA SEGURANÇA NOTA Pesquisa sobre a utilização de segurança no desenvolvimento do software na universidade Z. COLETA DE DADOS 1) Qual a metodologia utilizada para o desenvolvimento do software web? 2) Quais são os critérios de segurança adotados no desenvolvimento de software web em Java EE? 3) Qual o nível de abrangência dos sistemas aplicativos web em Java EE na universidade? 4) Como são utilizados os sistemas aplicativos web em Java EE na universidade? 5) As aplicações web em Java EE podem sofrer algum tipo de ameaça? 6) Quais são os principais riscos e vulnerabilidades de uma aplicação web em Java EE? 7) Como evitar a ocorrência de um ataque de Injeção de SQL numa aplicação web em Java EE? 8) Como se faz para evitar o ataque de Cross-site scripting (XSS) numa aplicação web em Java EE? 9) O que é um desenvolvimento de software com código seguro? 10) As informações dos Institutos de segurança sobre vulnerabilidades são utilizadas nas aplicações que desenvolve? AINDA NÃO, MAS PRETENDEMOS UTILIZAR APENAS ALGUNS AINDA NÃO NÃO MANTER AS BIBLIOTECAS UTILIZADAS SEMPRE ATUALIZADAS NÃO SABE NÃO SABE NOTA NOTA TOTAL Os nomes dos funcionários nas Tabelas 2 e 3 foram trocados por motivo de segurança da informação.

52 49 A Tabela 3 reflete os dados coletados na pesquisa feita na Tabela 2, onde as respostas dos funcionários entrevistados, com nomes fictícios, revelam o conhecimento de algumas vulnerabilidades e riscos que podem afetar uma aplicação web. Porém, a maioria das vulnerabilidades existentes ainda são desconhecidas pelos funcionários que foram entrevistados. As notas levaram em consideração tudo o que está relacionado com o desenvolvimento de uma aplicação segura. Na Tabela 3 é exibida a média das notas, cujo valor ficou em 6,7 (escala de 0,0 a 10), sendo esse o valor correspondente para o nível de conhecimento de segurança em aplicações web. Tabela 3 Sumário das Entrevistas Realizadas 7 Nível de conhecimento Entrevistado Linguagem de de segurança em Programação aplicações web Nota (0,0 a 10) Func1 - Analista Java EE 9 Func2 - Analista Java EE 9 Func3 - Analista Java EE 8 Func4 - Analista Java EE 6 Func5 - Programador PHP / JOOMLA 5 Func6 - Programador PHP / JOOMLA 5 Func7 - Programador PHP / JOOMLA 5 MÉDIA DAS NOTAS => 6,7 Na Tabela 4, podemos verificar a relação que existe entre os itens da coleta de dados da pesquisa e conteúdo exemplificado nos apêndices desta monografia. Somente os itens 3, 4 e 10 não tiveram nenhum tipo de relação com o conteúdo disponibilizado nos apêndices. 7 Os nomes dos funcionários nas Tabelas 2 e 3 foram trocados por motivo de segurança da informação.

53 50 Tabela 4 Relação: Coleta de Dados X Apêndices DADOS COLETADOS RELAÇÃO 1. Qual a metodologia utilizada para o desenvolvimento do software web? Apêndice E 2. Quais são os critérios de segurança adotados no desenvolvimento de software web em Java EE? Apêndice C 3. Qual o nível de abrangência dos sistemas aplicativos web em Java EE na universidade? Nenhuma 4. Como são utilizados os sistemas aplicativos web em Java EE na universidade? Nenhuma 5. As aplicações web em Java EE podem sofrer algum tipo de ameaça? Apêndice D 6. Quais são os principais riscos e vulnerabilidades de uma aplicação web em Java EE? Apêndices B, C e D 7. Como evitar a ocorrência de um ataque de Injeção de SQL numa aplicação web em Java EE? Apêndice D 8. Como se faz para evitar o ataque de Cross-site scripting (XSS) numa aplicação web em Java EE? Apêndice D 9. O que é um desenvolvimento de software com código seguro? Apêndice F 10. As informações dos Institutos de segurança sobre vulnerabilidades são utilizadas nas aplicações que Nenhuma desenvolve?

54 51 5 Discussão A Gestão de Segurança da Informação e Comunicação abrange um grande número de opções, onde a plataforma Java EE e os institutos de segurança tais como OWASP e SANS, podem contribuir grandemente. A reitoria da universidade Z, em atenção dada às recomendações da Instrução Normativa 04/2010 (IN4) e outras orientações no âmbito da contratação e execução dos serviços de TI, com o objetivo de melhorar o processo de governança em tecnologia da informação (TI) na administração pública, gerou um movimento no sentido de criar condições que busquem desenvolver, atualizar e revisar constantemente o processo de gestão dos recursos de TI nas instituições públicas. A pesquisa serviu para avaliarmos o nível de conhecimento que os desenvolvedores de aplicações da InfoTIC possuem para produzir um software seguro e com codificação segura. A média das notas exibida na Tabela 3, obtidas pelas respostas ao questionário na Tabela 2, mostram que o conhecimento sobre codificação segura na InfoTIC, está em um nível médio. Verificou-se que as informações e técnicas para evitar vulnerabilidades disponíveis nos institutos de segurança, tais como OWASP e SANS, não foram utilizados pelos funcionários do desenvolvimento de software, por não saberem sobre a existência dos tais institutos. Devido ao fato da maioria dos funcionários serem pessoas recémconcursadas, é normal haver certa falta de habilidade dos mesmos, pois muitos terminaram a faculdade há pouco tempo, e não tiveram tempo de adquirir a experiência necessária nessas novas tecnologias, incluindo o Java EE, que têm

55 52 evoluído gradativamente, com inúmeros recursos novos, exigindo assim uma atualização constante a cada dia que passa. O resultado da pesquisa não invalida a hipótese, pois o nível médio de conhecimento sobre codificação segura demonstra que falta algum conhecimento de como usar questões de segurança na plataforma Java EE. Na verdade, a segurança de 100% é utópica, mas a prática de Gestão da Segurança da Informação e Comunicação no desenvolvimento do software aplicativo com codificação segura, proporcionará uma redução bastante significativa das vulnerabilidades e riscos que poderiam ocorrer em uma aplicação web. Apesar da citação feita pelo órgão internacional DHS(2010), que foi mencionado na seção 1.2 do capítulo 1 desta monografia, referente ao que chamamos de software seguro, se conclui que a segurança do software é um objetivo constante a ser alcançado, pois a cada dia que passa surgem novas vulnerabilidades. Da mesma forma que acontece com as empresas de software que criam antivírus para combater os vírus de computador que já existem, a cada dia são criados novos vírus que ainda não possuem o antivírus. Ou seja, uma luta constante que nunca termina. Em setembro de 2011, foi detectado num sistema desenvolvido em ASP a vulnerabilidade conhecida como Injeção de SQL, porém, esta falha já foi mitigada. 5.1 Sugestão de Melhorias Para melhorar o nível de segurança no desenvolvimento das aplicações web, a reitoria da universidade Z precisa continuar investindo na qualificação dos demais analistas e programadores para o aprendizado e também reciclagem do seguinte: Programação em Java EE, incluindo segurança e código seguro para aplicações web; Aplicação das informações e técnicas de mitigação de vulnerabilidades recomendadas pelo instituto de segurança OWASP; Observação da NORMA ABNT ISO/IEC 27002:2005 Seção 12; Metodologia para desenvolvimento seguro do software CLASP.

56 53 A utilização desses recursos em conjunto contribui grandemente para reduzir as brechas existentes, mitigando assim, a maioria das vulnerabilidades e riscos nas aplicações web desenvolvidas na plataforma Java EE. Em relação à implementação da segurança, pode-se considerar que todos os requisitos de segurança e o design especificado sejam implementados de maneira correta, através da utilização de linguagem de programação segura e da utilização de padrões, guias e normas de codificação (WAGNER & MACHADO, 2010). A Reitoria da Universidade Z, deve criar uma política para desenvolvimento de aplicações com código seguro em conformidade com o que é demonstrado no mapa conceitual do software com código seguro no apêndice F (veja Figura 16), a fim de que a InfoTIC melhore o nível de desenvolvimento de aplicações web com segurança. No processo de desenvolvimento seguro, logo de início, durante a concepção, deve-se levantar todas as possibilidades de riscos que poderiam atacar um software de aplicação, seja web ou desktop, de modo que sejam levantados todos os requisitos de segurança que forem necessários. Deve-se definir qual banco de dados será utilizado, qual servidor de aplicações será utilizado, qual sistema operacional será utilizado no servidor web, qual a plataforma de desenvolvimento, também se deve solicitar ao setor de infraestrutura todos os recursos necessários para proteger as aplicações que ficarão no servidor, tais como firewall, antivírus, monitoramento da rede, back-up, etc. 5.2 Validade da Construção O constructo é verdadeiro (veja Tabela 5), as variáveis evidenciadas, mostram o nível de segurança existente no setor de desenvolvimento da reitoria da universidade Z, após a conformidade com o mapa conceitual de desenvolvimento de software com codificação segura (veja Figura 16). Com relação ao Objetivo Geral, foi realizado um estudo de caso que avaliou alguns dos requisitos de segurança (veja Tabela 2). Os Objetivos Específicos também foram avaliados. Mostrou-se no apêndice D, e também no item 2.1.2, os principais erros na implementação e riscos do controle de acesso. Abordamos também algumas formas de se criar uma solução para o controle de acesso. Mostramos no apêndice C como inserir código seguro em aplicações web.

57 54 Temos como fonte de evidência documental, o apêndice A, que relata os ataques realizados pelos hackers; onde o item A.3 (veja Figura 12) exibe uma alteração na interface da página de um dos sítios da UFRJ; e também temos outras fontes de evidências documentais relacionados aos sítios do governo, tais como o item A.1 referente ao Exército Brasileiro e o item A.2 referente aos sítios da Presidência da República, Senado e Receita Federal. Temos como fonte de evidência a entrevista, as respostas dadas a cada pergunta do questionário (veja Tabelas 2 e 3 Capítulo 4), onde o funcionário entrevistado Func6 relata resumidamente como procede para conseguir que uma aplicação fique segura durante a sua operação. As perguntas foram pertinentes, de modo que foi possível saber qual o nível de segurança que os desenvolvedores da InfoTIC possuem até esse momento para o desenvolvimento de aplicações seguras. Temos como fonte de evidência a observação participativa, onde o fato de participar de uma das equipes de desenvolvimento em Java EE, constatou-se as dificuldades na implementação de segurança no software aplicativo, pois os cursos de capacitação não ensinam como desenvolver aplicativos com segurança, mas apenas explicam quais os recursos disponíveis na plataforma Java EE. Também, se pôde observar a dificuldade para configurar um servidor de aplicações, tais como o Apache Tomcat 6 ou JBoss 6. Caso sejam mal configurados, podem gerar alguma vulnerabilidade. Tabela 5 Variáveis X Nível de Segurança VARIÁVEIS DESCRIÇÃO NÍVEL DE SEGURANÇA Equipe de desenvolvimento EQP02 (Func1) 6,7 Sistema aplicativo SGA 7 Plataforma Java EE 10 Norma NORMA NBR ISSO/IEC 27002: Instituto de segurança OWASP 10 Metodologia de desenvolvimento CLASP 10 Média do nível de segurança => 8,9

58 55 Essas são as conclusões relativas às variáveis da Tabela 5: Na variável plataforma, segundo Wagner e Machado (2010, p. 6), o Java possui um alto nível de segurança devido às aplicações funcionarem de forma stand Box. Por isso ganhou nota 10 no nível de segurança. Na variável norma, conforme consta na Seção 12 da NORMA ABNT NBR ISO/IEC 27002:2005, enfatiza que todos os requisitos de segurança devem ser identificados na fase de levantamento de requisitos do projeto. Por isso ganhou nota 10 no nível de segurança. Na variável instituto de segurança, temos as Melhores Práticas de Codificação Segura OWASP e a lista da OWASP Top , que contém a relação dos dez maiores riscos críticos em segurança de aplicações web (OWASP, 2011). Por isso ganhou nota 10 no nível de segurança. Na variável metodologia de desenvolvimento, temos o CLASP, que é um modelo de processo de desenvolvimento de software seguro, permitindo o ciclo de vida de maneira estruturada, com repetição e mensuração, especificado pela OWASP (OWASP, 2011). Por isso ganhou nota 10 no nível de segurança. Na variável equipe de desenvolvimento, temos que levar em conta o fator humano, o qual devidamente treinado para reconhecer e mitigar vulnerabilidades, poderá mitigar a maioria das vulnerabilidades numa determinada aplicação. Por isso ganhou nota 6,7 no nível de segurança. Na variável sistema aplicativo, temos o software em desenvolvimento, o qual depende de todas as demais variáveis para ser desenvolvido com segurança e código seguro. Por isso ganhou nota 7 no nível de segurança. 5.3 Validade Interna A validade interna deste estudo de caso demonstra que os dados pesquisados refletem o nível do padrão de segurança na InfoTIC, no que diz respeito à implementação de aplicações com segurança embutida no código-fonte do sistema desenvolvido. A equipe de desenvolvimento após tomar conhecimento das regras enumeradas na NORMA NBR ISSO/IEC 27002:2005, e também tomarem

59 56 conhecimento das informações e técnicas para mitigar vulnerabilidades fornecidos pelo instituto OWASP, e também adotarem uma metodologia para desenvolvimento de software seguro, e tomarem conhecimento das técnicas de segurança do Java EE, verificou-se a melhoria no desenvolvimento de aplicações web seguras com código seguro. Ou seja, o nível de codificação segura melhorou, conforme consta na Tabela 5. Os dados coletados (veja Tabela 3) têm relação direta com a hipótese analisada, pois foi constatado por meio das entrevistas e questionários, que os desenvolvedores em Java não possuíam o conhecimento de uma codificação segura, tanto em Java como nas vulnerabilidades que são passadas como parâmetros nas páginas dos aplicativos web. Os resultados mostraram que a hipótese têm validade, porém existe a necessidade de que todos os funcionários do desenvolvimento sejam treinados para utilizar todos os recursos citados acima. 5.4 Validade Externa A validade externa não ocorre, apesar dos resultados da pesquisa provarem que a hipótese é verdadeira, pois estatisticamente não podemos generalizar que da mesma forma como acontece com a InfoTIC na reitoria da universidade Z, o mesmo possa estar acontecendo nos setores de desenvolvimento de aplicações de outros órgãos públicos da Administração Pública Federal.

60 57 6 Conclusões e Trabalhos Futuros 6.1 Conclusões Neste trabalho fizemos um estudo de caso sobre o Java EE e Segurança Cibernética atuando em aplicações web, o qual consistiu em verificar a ocorrência da falta de conhecimento das equipes de desenvolvimento da InfoTIC sobre a maneira de usar questões de segurança da plataforma Java EE, dentro do contexto corporativo da reitoria da Universidade Z. Conduzimos entrevistas com funcionários da InfoTIC para verificar o nível de conhecimento de segurança e utilização da codificação segura nas aplicações desenvolvidas com Java EE, no contexto de uma universidade federal. Apresentamos os resultados alcançados por meio de um estudo de caso, com tipo de dados qualitativo, pois é descritivo. Apesar do resultado da pesquisa validar a hipótese, constatou-se, que se os desenvolvedores aplicarem todo o conhecimento adquirido neste trabalho para desenvolvimento de software, será produzido um software seguro com codificação segura. Os conhecimentos são: Codificação segura por meio das técnicas de mitigação ofertadas pelo Instituto OWASP; Metodologia de desenvolvimento seguro como o CLASP; NORMA ABNT NBR ISO/IEC 27002: Seção 12; Plataforma Java EE com programação segura no código.

61 58 Esses conhecimentos, quando aplicados em conjunto, permite a redução das brechas existentes, mitigando assim, a maioria das vulnerabilidades e riscos nas aplicações web desenvolvidas na plataforma Java EE. Desse modo, os aplicativos que forem desenvolvidos após o conhecimento deste trabalho de monografia, terão um nível de segurança bem maior do que o resultado da pesquisa. A contribuição desse trabalho é alertar as equipes de desenvolvimento quanto à ocorrência de diversos tipos de vulnerabilidades e risco aos quais as aplicações web estão sujeitas a sofrer. Os dados coletados permitiram analisar o que ocorre durante o desenvolvimento de uma aplicação web. Verificou-se que a Reitoria da Universidade Z, através da equipe de desenvolvimento, precisa adotar uma política para desenvolvimento de aplicações com código seguro. Pois apesar das equipes de desenvolvimento utilizar alguma metodologia de desenvolvimento de software, ela sozinha por si não será suficiente para garantir e minimizar as brechas na Segurança da Informação dos aplicativos web. No capítulo 2 e nos apêndices C e D, a partir da análise de documentos advindos do estudo de caso, são demonstradas várias possibilidades de desenvolvimento de aplicações com código seguro e código inseguro. Esse material serve como exemplo para outros funcionários da Administração Pública Federal, que trabalham na Área de Tecnologia da Informação e Comunicação ou até na Gestão de Segurança da Informação e Comunicação. As limitações desse estudo de caso é o fato de que a InfoTIC é um setor novo dentro da universidade Z 8, que ainda se encontra em fase de estruturação. Outra limitação foi o tempo para desenvolver esta monografia. 6.2 Trabalhos Futuros O estudo de caso realizado neste trabalho não esgotou o tema. A necessidade de desenvolvimento de aplicativos para web com código seguro possui muitas facetas. O Java EE certamente é a plataforma mais indicada para produzir software aplicativo seguro, pois não se limita apenas ao código Java, mas também abrange 8 O nome da instituição onde foi realizada a pesquisa foi trocado por questões de segurança da informação.

62 59 tudo que se relacionam com HTML, XHTML, XML, JSF, JSP, JavaScript, CSS, Criptografia, WebServices, etc. Foi lançado em meados de 2011, o Java 7, trazendo assim novos desafios de implementação de sistemas aplicativos seguros e com codificação segura. A utilização do MDA e UML por meio de transformações, que permita gerar aplicações seguras na plataforma Java EE é outro desafio, principalmente com a aplicação de código seguro.

63 60 Referências e Fontes Consultadas ABNT - ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS. Tecnologia da informação - Técnicas de segurança - Código de prática para a gestão da segurança da informação: ABNT NBR ISO/IEC 27002: a. ed. Rio de Janeiro, ALMEIDA, Marcelo. Ataque deixa 105 sites da UFRJ desfigurados. Disponível em: <http://www.zone-h.com.br/news/id/447> Acessado em: setembro de ASF - APACHE SOFTWARE FOUNDATION. Realm Configuration HOW-TO. Disponível em: <http://tomcat.apache.org/tomcat-6.0-doc/realm-howto.html>. Acessado em: julho de BRAZ, Fabrício. Segurança de Aplicações. Especialização em Ciência da Computação: Gestão da Segurança da Informação e Comunicações. Universidade de Brasília, DHS - Department of Homeland Security. Security in the Software Lifecycle Disponível em: https://buildsecurityin.us-cert.gov. Acessado em: novembro/2010. DIAS, Cláudia. Segurança de Auditoria da Tecnologia da Informação. Rio de Janeiro: Axcel Books do Brasil, FERNANDES, Dave. Autenticação e Autorização sem JAAS utilizando hierarquia de Perfis de Acesso Parte I. Disponível em: <http://www.devmedia.com.br/articles/viewcomp.asp?comp=6161&hl=>. Acessado em: julho de FERNANDES, Jorge Henrique Cabral. Sistemas, Informação e Comunicação: GSIC050 (Notas de Aula). Curso de Especialização em Gestão da Segurança da Informação e Comunicações: 2009/2011. Departamento de Ciências da Computação da Universidade de Brasília p.

64 FRANZINI, Fernando. Autenticação e autorização em aplicativos web. Disponível em: plicativos_web>. Acessado em: julho de GABINETE DE SEGURANÇA INSTITUCIONAL DA PRESIDÊNCIA DA REPÚBLICA. Instrução Normativa GSI No. 1, de 13 de junho de 2008 : Disciplina a gestão de segurança da informação e comunicações na administração pública federal, direta e indireta, e dá outras providências. Brasília, junho Publicada no DOU No. 115, de 18 Jun 2008 Seção 1. Disponível em: <http://dsic.planalto.gov.br/legislacaodsic>. Acesso em: Agosto de GUERRA, Eduardo. Os sete pecados do controle de acesso para aplicações Java EE. Mundo Java. Curitiba, n. 28, p.26-33, HOLANDA, Maristela Terto; FERNANDES, Jorge Henrique Cabral. Segurança no Desenvolvimento de Aplicações: GSIC701 (Notas de Aula). Curso de Especialização em Gestão da Segurança da Informação e Comunicações: 2009/2011. Departamento de Ciências da Computação da Universidade de Brasília p. JEVEAUX, Paulo C. M. Autenticação e Autorização: JAAS com JDBC Realm. Disponível em: < Acessado em: julho de KURNIAWAN, Budi. Programando em JavaServer Faces. Rio de Janeiro: Editora Ciência Moderna Ltda LAZOTI, Rodrigo. Filtrando requisições com PhaseListener. Disponível em: <http://rodrigolazoti.com.br/2008/09/01/filtrando-usuarios-logados-em-jsf-comphaselistener/>. Acessado em: julho de MACEDO, Ciro. Controlando o acesso em aplicações JSF - PhaseListener. Disponível em: < Acessado em: junho de MCGRAW, G. Software security. In IEEE Security and Privacy, March/April 2004, pages MOREIRA, Leandro. Login - autenticação e autorização usando JavaServer Faces (jsf). Disponível em: < Acessado em: junho de OLMOS, Cesar. Filtros para servlets. Disponível em: <http://www.guj.com.br/articles/11>. Acessado em: agosto de ORACLE. Java EE at a Glance. Disponível em: <http://www.oracle.com/technetwork/java/javaee/overview/index.html>. Acesso em: março de

65 ORACLE. Java EE 6 Technologies. Disponível em: <http://www.oracle.com/technetwork/java/javaee/tech/index-jsp html>. Acesso em: agosto de ORACLE. The Java EE 5 Tutorial. Disponível em: <http://download.oracle.com/javaee/5/tutorial/doc/ >. Acesso em: agosto de ORACLE. The Java EE 6 Tutorial. Disponível em: <http://download.oracle.com/javaee/6/tutorial/doc/ >. Acesso em: agosto de OSVDB. Padrões de Vulnerabilidades. Disponível em: <http://osvdb.org/vuln_standards>. Acessado em: setembro de OWASP. CLASP Project. Disponível em: Category: OWASP_CLASP_Project. Último acesso em janeiro de OWASP. How to add validation logic to HttpServletRequest. Disponível em: <https://www.owasp.org/index.php/how_to_add_validation_logic_to_httpservletr equest>. Acessado em: agosto de OWASP. Melhores Práticas de Codificação Segura OWASP: Guia de Referência Rápida Disponível em: <http://www.owasp.org/index.php/secure_coding_practices>. Último acesso em: julho de OWASP. OWASP Top 10: The Ten Most Critical web Application Security Risk Disponível em: <http://www.owasp.org/index.php/category:owasp_top_ten_project>. Último acesso em: julho de OWASP. WebScarab. Software para análise de aplicativos web. Disponível em: <https://www.owasp.org/index.php/webscarab_getting_started>. Acesso em: julho de PAIVA, Alan e MEDEIROS, Indiana Belianka Kosloski. Uma abordagem de caso de integração entre os processos de Tratamento de Incidentes de Segurança Computacionais e Desenvolvimento de Software. Monografia de especialização. Brasília: Departamento de Ciência da Computação da Universidade de Brasília PASSOS, Antonio. Java Security - Como Usar JAAS Com Tomcat 6. Disponível em: <http://pt.scribd.com/doc/ /java-security-como-usar-jaas-com- Tomcat-6>. Acessado em: maio de PINCEL, Paulo. Polícia Federal investiga ataques de hackers na internet. Disponível em: <http://www.piauihoje.com/noticias/policia-federal-investiga-ataques-dehackers-na-internet html>. Acessado em: setembro de

66 WAGNER, Rosana; MACHADO, Alencar. Níveis de segurança para processos de desenvolvimento de software seguro. Universidade Federal de Santa Maria (UFSM), Santa Maria RS Disponível em: <http://www.sirc.unifra.br/artigos2010/7.pdf>. Acessado em: 28 out SACRAMENTO, Wendell M. Utilizando Servlet Filter com JavaServer Faces. Disponível em: <http://www.devmedia.com.br/articles/viewcomp.asp?comp=5331>. Acessado em: julho de SANS. SANS 2009: The Top Cyber Security Risks. Disponível em: <http://www.sans.org/top-cyber-security-risks >. Acessado em: janeiro de SECRETARIA DE LOGÍSTICA E TECNOLOGIA DA INFORMAÇÃO DO MINISTÉRIO DO PLANEJAMENTO, ORÇAMENTO E GESTÃO. INSTRUÇÃO NORMATIVA No. 4, DE 12 DE NOVEMBRO DE 2010: Dispõe sobre o processo de contratação de Soluções de Tecnologia da Informação pelos órgãos integrantes do Sistema de Administração dos Recursos de Informação e Informática (SISP) do Poder Executivo Federal. Brasília, novembro de Publicada no DOU No. 218, de 16 nov 2010 Seção 1. Disponível em: <http://www.governoeletronico.gov.br/biblioteca/arquivos/instrucao-normativano-04-de-12-novembro-de-2010/in SLTI MP V1.PDF>. Acesso em: setembro de SPRINGSOURCE. Spring Security. Disponível em: <http://static.springsource.org/spring-security/site/>. Ultimo acesso em julho de STAIR, Ralph; REYNOLDS, George. Princípios de Sistemas de Informação. Editora: Cengage Learning. Sexta Edição TAGIAROLI, Guilherme. Hackers vazam informações de funcionários do Exército Brasileiro. Atualizada 20/06/2011. Disponível em:<http://tecnologia.uol.com.br/ultimas-noticias/redacao/2011/06/20/hackersvazam-informacoes-de-funcionarios-do-exercito-brasileiro.jhtm>. Acessado em: agosto de TERRA, Ricardo. Segurança da Internet. Disponível em: <http://www.ricardoterra.com.br/publicresources/palestrasegurancainternet. pdf>. Ultimo acesso em julho de VIANA, Fábio. Tutorial de JASS. Disponível em: <http://www.guj.com.br/articles/184>. Ultimo acesso em julho de YIN, R. K. Estudo de Caso: Planejamento e Métodos. 3. ed. Porto Alegre: Bookman

67 64 Glossário A ABNT Associação Brasileira de Normas Técnicas. APF Administração Pública Federal. API Application Programming Interface (Interface de Programação de Aplicativos). B Banco de dados (base de dados) é um conjunto de registros dispostos em estrutura regular que possibilita a reorganização dos mesmos e armazenagem de informação. C CLASP Comprehensive, Lightweight Application Security Process. CSRF Cross-Site Request Forgery. D DoS Denial of Service (negação de serviço). H HTTP Hypertext Transfer Protocol. I IDE Integrated Development Enviroment (ambiente integrado para desenvolvimento de software). IEC International Electrotechnical Commission. IN Instrução Normativa. Informar - Ato de prover uma informação. Informação - Significado que um agente extrai de um dado. ISO International Organization for Standardization. J Java EE Java Enterprise Edition. JDK Java Development Kit.

68 M MDA Model Drive Architecture. 65 N NBR Norma Brasileira. O ORACLE Empresa de software norte-americana. OSVDB Open Source Vulnerability Database. OWASP Open web Application Security Project. R RBAC Role Based Access Control Model. RPC Remote Procedure Calls. RUP Rational Unified Process (Processo Unificado Racional) S SANS Institute. Instituto SANS (SysAdmin, Audit, NetWork, Security). SDK Software Development Kit. SQL Structured Query Language. SQL Injection Injeção de SQL. T TIC Tecnologia da Informação e Comunicação. U URL Uniform Resource Locator. W WWW World Wide web. X XSS Cross-Site Scripting.

69 66 Apêndice A Ataque de Hackers A.1 Hackers vazam informações de funcionários do Exército Brasileiro Hackers brasileiros (TAGIAROLI, 2011) vazaram neste sábado (18/06/2011) informações de quase um mil membros do Exército Brasileiro. O ataque foi feito pelo Fatal Error Crew, mesmo grupo que atacou o site da presidência da República no início deste ano. Eles próprios fizeram a divulgação para a imprensa, enviando por um link com vários dados de funcionários da Força Armada. As informações vazadas pelo Fatal Error Crew contêm o nome, número de CPF, função e um número que, supostamente, tem relação com o cadastro militar de funcionários da corporação. Os dados foram adquiridos por meio de um ataque à base de dados do "Gestor de Controle de Distribuição da Água. Consultado sobre a divulgação de informações nesta segunda-feira (20), o Centro de Comunicação Social do Exército informou que o Centro de Coordenação para Tratamento de Incidentes de Rede do Exército já está trabalhando no caso e que os dados não comprometeram a página principal da Força Armada. Eles conseguiram as informações de um banco de dados do Exército a partir de um ataque conhecido como injeção de SQL. Esse tipo de ação consiste, basicamente, na exploração de falhas que levam usuários avançados de programação a acessar o que quiserem dentro de um banco de dados. Apesar da divulgação das informações, o grupo, consultado pela reportagem, afirmou que não usará os dados para o mal. Nós só queríamos expor a falta de segurança dos servidores do Exército Brasileiro. Além disso, um dos membros do

70 grupo, afirmou que essa não ser a primeira vez em que eles conseguiram acessar dados do órgão e que vários outros sites do Governo do Brasil são vulneráveis. 67 A.2 Polícia Federal investiga ataques de hackers na internet A Polícia Federal anunciou oficialmente nesta sexta-feira (24) que começou a investigar a série de ataques de hackers a sites do governo nos últimos dia. Após o ataque aos sites da Presidência, do Senado e da Receita Federal, classificados como o maior da história da rede no Brasil, os hackers derrubaram na madrugada desta sexta a página na internet do Instituto Brasileiro de Geografia e Estatística (IBGE). Segundo informações da assessoria de imprensa da Polícia Federal, as investigações já estão em curso. Na quinta-feira, ao G1, a Polícia Federal havia afirmado que o órgão reunia informações para monitorar as ações dos hackers. Não serão divulgadas informações sobre a investigação para não prejudicar o trabalho dos agentes da corporação, segundo a assessoria da PF. O site do Ministério da Cultura também apresentou instabilidade, em decorrência da sobrecarga de acessos por um único usuário. A equipe de infraestrutura do ministério trabalha com a possibilidade de que o site tenha sido alvo de hackers, mas não confirma o caso como um novo ataque. Após detectar e neutralizar a ameaça, o site voltou a funcionar normalmente. A página do Ministério do Esporte ficou fora do ar na manhã desta sexta, mas por volta das 9h o acesso estava normalizado. A assessoria de imprensa da pasta havia informado na quinta que tiraria o site do ar para que seja feita uma varredura. Segundo a assessoria, o procedimento é padrão para o trabalho de rastreamento. A assessoria da Empresa Brasileira de Infraestrutura Aeroportuária (Infraero), vinculada ao Ministério da Defesa, afirma que o página da autarquia foi tirada do ar propositalmente para reforço na segurança, para evitar possíveis ataques de hackers. Grupo nacionalista No ataque ao site do IBGE, os hackers deixaram uma mensagem em que se denominam como um grupo nacionalista, que deseja fazer do Brasil um país

71 68 melhor. O Fail Shell, nome do grupo que "pichou" o site do IBGE, promete ainda realizar neste mês o maior ataque a sites do governo da história. Ao pé da página, os hackers ainda negaram ter relações com os grupos LulzSec ou Anonymous no Brasil, que seriam "grupos sem qualquer ideologia", segundo a mensagem deixada pelos hackers. O LulzSecBrazil é apontado como o responsável pelos ataques que derrubaram sites do governo na madrugada de quarta-feira (22). Foi o maior ataque sofrido pelo governo, com mais de 2 bilhões de tentativas de acesso em um curto período de tempo, segundo o Serviço Federal de Processamento de Dados (Serpro). O órgão informou que o ataque não causou danos às informações disponíveis nas páginas e partiu de servidores localizados na Itália. A ação realizada pelos hackers na página do IBGE é diferente da que derrubou os portais da Presidência e do governo brasileiro na quarta. No caso do IBGE, foi feita uma pichação no site, ou uma alteração de página. Para derrubar os portais do governo, os hackers utilizaram sistemas que faziam múltiplas tentativas de acesso ao mesmo tempo, técnica batizada de negação de serviço e conhecida pelas iniciais em inglês DDoS (Distributed Denial of Service). Grupo contrário O canal de comunicação usado pelo LulzsecBrazil foi fechado por volta das 22h desta quinta (23). A decisão foi tomada pelos administradores da rede que também hospeda o canal usado pela operação do Lulzsec original. Antes, o grupo divulgou na internet arquivos com supostos dados de políticos, como a presidente Dilma Rousseff, o prefeito de São Paulo, Gilberto Kassab, o ministro da Educação, Fernando Haddad, e o prefeito do Rio de Janeiro, Eduardo Paes. Um possível indício do surgimento de um grupo de piratas contrários ao LulzSecBrazil é a divulgação de um documento que acusa um hacker de ser líder do movimento brasileiro. Ele seria Al3XG0, um conhecido criminoso digital envolvido com o roubo de senhas bancárias e cartões de crédito e que mantinha um site que pegava informações de brasileiros usando uma falha no site do Ministério do Trabalho. O documento indica também nome, RG e CPF de uma pessoa que, segundo o texto, seria o hacker Al3XG0. Há ainda um link para uma fotografia, supostamente do hacker.

72 69 O LulzSecBrazil teria ligações com o LulzSec, responsável por ataques recentes a empresas de videogame como Sony e Nintendo, às redes de televisão americanas Fox e PBS e a órgãos governamentais americanos como a CIA (agência de inteligência americana) e o FBI (polícia federal), além do serviço público de saúde britânico, o NHS. A.3 Hackers atacaram as páginas de 105 sítios da web na UFRJ Em 03/04/2007, segundo Almeida (2011), o grupo de crackers conhecidos como SegmentationFault, invadiu um servidor da Universidade Federal do Rio de Janeiro rodando FreeBSD. O servidor hospedava cerca de 105 sites os quais tiveram a página inicial alterada (defaced). Imagem da invasão deixada nas páginas da UFRJ. yes UFRJ FOI HACKEADA! Nós hackeamos seu servidor admin. desculpe =). defaced by S4P0 uname a;id;uptime;pwd FreeBSD acd.ufrj.br 4.8-RELEASE FreeBSD 4.8-RELEASE #2: Tue Aug 10 17:57:12 EST 2004 i386 uid=0(root) gid=0(wheel) groups=0(wheel), 2(kmem), 3(sys), 4(tty), 5(operator), 20(staff), 31(guest) 11:51 up 20:28, 5 users, load aver ages: 0,16 0,34 0,47 /root [ Contact us ] IRC.GigaChat.NET #SegFault Você pode ver a lista dos ataques a empresas famosas ou do governo brasileiro realizadas pelo grupo SegmentationFault aqui. Lista dos sites da UFRJ quer foram atacados. Aqui você pode ver a lista geral dos ataques do grupo SegmentationFault no mundo. Figura 12: Ataque ao sítio da UFRJ (ALMEIDA, 2011)

73 70 Esta foi o maior ataque contra uma instituição federal registrado no Brasil. O líder do grupo conhecido como s4p0, não quis revelar a falha explorada, pois diz que existem outros sites com a mesma falha e pretende atacá-los em breve. O grupo SegmentationFault é um dos grupos mais ativos do Brasil tendo atacado mais de 3000 sites ao redor do mundo, destes mais de 500 são sites do governo ou empresas famosas.

74 71 Apêndice B Exemplo de URL com Código Visível Figura 13: Código do parâmetro visível na URL - 1 (SILVA, 2011). Figura 14: Código do parâmetro visível na URL - 2 (SILVA, 2011).

Top Ten OWASP. Fausto Levandoski 1. Curso Tecnólogo em Segurança da Informação Av. Unisinos, 950 93.022-000 São Leopoldo RS Brasil. farole@gmail.

Top Ten OWASP. Fausto Levandoski 1. Curso Tecnólogo em Segurança da Informação Av. Unisinos, 950 93.022-000 São Leopoldo RS Brasil. farole@gmail. Top Ten OWASP Fausto Levandoski 1 1 Universidade do Vale do Rios dos Sinos (UNISINOS) Curso Tecnólogo em Segurança da Informação Av. Unisinos, 950 93.022-000 São Leopoldo RS Brasil farole@gmail.com Abstract.

Leia mais

UFG - Instituto de Informática

UFG - Instituto de Informática UFG - Instituto de Informática Especialização em Desenvolvimento de Aplicações Web com Interfaces Ricas EJB 3.0 Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 5 Servidores de Aplicação

Leia mais

Conviso Security Training Ementa dos Treinamentos

Conviso Security Training Ementa dos Treinamentos Escritório Central Rua Marechal Hermes 678 CJ 32 CEP 80530-230, Curitiba, PR T (41) 3095.3986 www.conviso.com.br Conviso Security Training Ementa dos Treinamentos Apresentação Sobre este Documento Este

Leia mais

JSF - Controle de Acesso FERNANDO FREITAS COSTA

JSF - Controle de Acesso FERNANDO FREITAS COSTA JSF - Controle de Acesso FERNANDO FREITAS COSTA ESPECIALISTA EM GESTÃO E DOCÊNCIA UNIVERSITÁRIA JSF Controle de Acesso Antes de iniciarmos este assunto, é importante conhecermos a definição de autenticação

Leia mais

SISTEMA DE AGENDAMENTO E GERENCIAMENTO DE CONSULTAS CLÍNICAS

SISTEMA DE AGENDAMENTO E GERENCIAMENTO DE CONSULTAS CLÍNICAS SISTEMA DE AGENDAMENTO E GERENCIAMENTO DE CONSULTAS CLÍNICAS Pablo dos Santos Alves Alexander Roberto Valdameri - Orientador Roteiro da apresentação Introdução Objetivos Motivação Revisão bibliográfica

Leia mais

Boas Práticas de Desenvolvimento Seguro

Boas Práticas de Desenvolvimento Seguro Boas Práticas de Desenvolvimento Seguro Julho / 2.012 Histórico de Revisões Data Versão Descrição Autor 29/07/2012 1.0 Versão inicial Ricardo Kiyoshi Página 2 de 11 Conteúdo 1. SEGURANÇA DA INFORMAÇÃO

Leia mais

DESENVOLVIMENTO COM JAVA EE E SUAS ESPECIFICAÇÕES

DESENVOLVIMENTO COM JAVA EE E SUAS ESPECIFICAÇÕES DESENVOLVIMENTO COM JAVA EE E SUAS ESPECIFICAÇÕES Hugo Henrique Rodrigues Correa¹, Jaime Willian Dias 1 Universidade Paranaense (Unipar) Paranavaí PR Brasil hugohrcorrea@gmail.com, jaime@unipar.br Resumo.

Leia mais

Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas) Sumário. Java 2 Enterprise Edition. J2EE (Java 2 Enterprise Edition)

Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas) Sumário. Java 2 Enterprise Edition. J2EE (Java 2 Enterprise Edition) Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas) J2EE () Sumário Introdução J2EE () APIs J2EE Web Container: Servlets e JSP Padrão XML 2 J2EE é Uma especificação para servidores

Leia mais

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

Desenvolvimento e disponibilização de Conteúdos para a Internet Desenvolvimento e disponibilização de Conteúdos para a Internet Por Matheus Orion OWASP A Open Web Application Security Project (OWASP) é uma entidade sem fins lucrativos e de reconhecimento internacional,

Leia mais

UM ESTUDO SOBRE ARQUITETURA PARA DESENVOLVIMENTO DE SOFTWARE WEB UTILIZANDO NOVAS TECNOLOGIAS

UM ESTUDO SOBRE ARQUITETURA PARA DESENVOLVIMENTO DE SOFTWARE WEB UTILIZANDO NOVAS TECNOLOGIAS UM ESTUDO SOBRE ARQUITETURA PARA DESENVOLVIMENTO DE SOFTWARE WEB UTILIZANDO NOVAS TECNOLOGIAS Edi Carlos Siniciato ¹, William Magalhães¹ ¹ Universidade Paranaense (Unipar) Paranavaí PR Brasil edysiniciato@gmail.com,

Leia mais

ENTERPRISE JAVABEANS 3. Msc. Daniele Carvalho Oliveira

ENTERPRISE JAVABEANS 3. Msc. Daniele Carvalho Oliveira ENTERPRISE JAVABEANS 3 Msc. Daniele Carvalho Oliveira Apostila Servlets e JSP www.argonavis.com.br/cursos/java/j550/index.html INTRODUÇÃO Introdução Enterprise JavaBeans é um padrão de modelo de componentes

Leia mais

Associação Carioca de Ensino Superior Centro Universitário Carioca

Associação Carioca de Ensino Superior Centro Universitário Carioca Desenvolvimento de Aplicações Web Lista de Exercícios Métodos HTTP 1. No tocante ao protocolo de transferência de hipertexto (HTTP), esse protocolo da categoria "solicitação e resposta" possui três métodos

Leia mais

Desenvolvendo Aplicações Web com NetBeans

Desenvolvendo Aplicações Web com NetBeans Desenvolvendo Aplicações Web com NetBeans Aula 3 Cap. 4 Trabalhando com Banco de Dados Prof.: Marcelo Ferreira Ortega Introdução O trabalho com banco de dados utilizando o NetBeans se desenvolveu ao longo

Leia mais

Geração e execução de scripts de teste em aplicações web a partir de casos de uso direcionados por comportamento 64

Geração e execução de scripts de teste em aplicações web a partir de casos de uso direcionados por comportamento 64 direcionados por comportamento 64 5 Estudo de caso Neste capítulo serão apresentadas as aplicações web utilizadas na aplicação da abordagem proposta, bem como a tecnologia em que foram desenvolvidas, o

Leia mais

Este livro é dedicado a minha esposa Edna e a todos os desenvolvedores que fizeram do software livre um meio profissional levado a sério.

Este livro é dedicado a minha esposa Edna e a todos os desenvolvedores que fizeram do software livre um meio profissional levado a sério. EDSON GONÇALVES Este livro é dedicado a minha esposa Edna e a todos os desenvolvedores que fizeram do software livre um meio profissional levado a sério. AGRADECIMENTOS Primeiramente gostaria de agradecer

Leia mais

J2EE TM Java 2 Plataform, Enterprise Edition

J2EE TM Java 2 Plataform, Enterprise Edition CURSO DE GRADUAÇÃO J2EE TM Java 2 Plataform, Enterprise Edition Antonio Benedito Coimbra Sampaio Junior abc@unama.br OBJETIVOS DO CURSO Capacitar os alunos no desenvolvimento de aplicações para a WEB com

Leia mais

Aula 11 Integrando Segurança ao Processo de Desenvolvimento de Software. Prof. Leonardo Lemes Fagundes

Aula 11 Integrando Segurança ao Processo de Desenvolvimento de Software. Prof. Leonardo Lemes Fagundes Aula 11 Integrando Segurança ao Processo de Desenvolvimento de Software Prof. Leonardo Lemes Fagundes A educação faz com que as pessoas sejam fáceis de guiar, mas difíceis de arrastar; fáceis de governar,

Leia mais

Arquitetura de uma Webapp

Arquitetura de uma Webapp Arquitetura de uma Webapp Arquitetura J2EE Containers e componentes MVC: introdução Frederico Costa Guedes Pereira 2006 fredguedespereira@gmail.com Plataforma J2EE World Wide Web e a Economia da Informação

Leia mais

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

Segurança no Plone. Fabiano Weimar dos Santos [Xiru] xiru@xiru.org Segurança no Plone Fabiano Weimar dos Santos [Xiru] xiru@xiru.org Roteiro Um pouco sobre mim... Introdução Como Plone É tão Seguro? Modelo de Segurança OWASP Top 10 Segurança no Plone - Provedor PyTown.com

Leia mais

ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE

ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE Amarildo Aparecido Ferreira Junior 1, Ricardo Ribeiro Rufino 1 ¹Universidade Paranaense (Unipar) Paranavaí PR Brasil aapfjr@gmail.com

Leia mais

CURSO DESENVOLVEDOR JAVA WEB E FLEX Setembro de 2010 à Janeiro de 2011

CURSO DESENVOLVEDOR JAVA WEB E FLEX Setembro de 2010 à Janeiro de 2011 CURSO DESENVOLVEDOR JAVA WEB E FLEX Setembro de 2010 à Janeiro de 2011 O curso foi especialmente planejado para os profissionais que desejam trabalhar com desenvolvimento de sistemas seguindo o paradigma

Leia mais

Ferramenta: Spider-CL. Manual do Usuário. Versão da Ferramenta: 1.1. www.ufpa.br/spider

Ferramenta: Spider-CL. Manual do Usuário. Versão da Ferramenta: 1.1. www.ufpa.br/spider Ferramenta: Spider-CL Manual do Usuário Versão da Ferramenta: 1.1 www.ufpa.br/spider Histórico de Revisões Data Versão Descrição Autor 14/07/2009 1.0 15/07/2009 1.1 16/07/2009 1.2 20/05/2010 1.3 Preenchimento

Leia mais

Desenvolvimento de Aplicações. Desenvolvimento de Aplicações. Desenvolvimento de Aplicações. Dificuldades no uso de Bancos de Dados

Desenvolvimento de Aplicações. Desenvolvimento de Aplicações. Desenvolvimento de Aplicações. Dificuldades no uso de Bancos de Dados Desenvolvimento de Aplicações Desenvolvimento de Aplicações Dificuldades no uso de Bancos de Dados Um leigo não sabe o que é e como funciona um BD Mesmo um profissional da área de informática pode ter

Leia mais

DESENVOLVIMENTO WEB UTILIZANDO FRAMEWORK PRIMEFACES E OUTRAS TECNOLOGIAS ATUAIS

DESENVOLVIMENTO WEB UTILIZANDO FRAMEWORK PRIMEFACES E OUTRAS TECNOLOGIAS ATUAIS DESENVOLVIMENTO WEB UTILIZANDO FRAMEWORK PRIMEFACES E OUTRAS TECNOLOGIAS ATUAIS Emanuel M. Godoy 1, Ricardo Ribeiro Rufino 1 1 Universidade Paranaense (Unipar) Paranavaí PR Brasil godoymanel@gmail.com,

Leia mais

Manual de referência do HP Web Jetadmin Database Connector Plug-in

Manual de referência do HP Web Jetadmin Database Connector Plug-in Manual de referência do HP Web Jetadmin Database Connector Plug-in Aviso sobre direitos autorais 2004 Copyright Hewlett-Packard Development Company, L.P. A reprodução, adaptação ou tradução sem permissão

Leia mais

As doze maiores ameaças do mercado intermediário: evitando ataques maliciosos comuns em nível de aplicativo.

As doze maiores ameaças do mercado intermediário: evitando ataques maliciosos comuns em nível de aplicativo. Gerenciamento de segurança on-line White paper Dezembro de 2007 As doze maiores ameaças do mercado intermediário: evitando ataques maliciosos comuns Página 2 Conteúdo 2 Introdução 3 Compreendendo ataques

Leia mais

Segurança no Desenvolvimento de Aplicações Web. Security in Web Applications Development

Segurança no Desenvolvimento de Aplicações Web. Security in Web Applications Development Segurança no Desenvolvimento de Aplicações Web Security in Web Applications Development Jonas Alves de Oliveira 1 Leonardo Luiz Teodoro Campos 2 Cristiano Antônio Rocha Silveira Diniz 3 Resumo: Este artigo

Leia mais

Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V. 2009-2

Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V. 2009-2 Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V. 2009-2 Aula 2 Computação em Nuvem Desafios e Oportunidades A Computação em Nuvem

Leia mais

SISTEMA DE GESTÃO DE PRODUÇÃO DE EVENTOS

SISTEMA DE GESTÃO DE PRODUÇÃO DE EVENTOS SISTEMA DE GESTÃO DE PRODUÇÃO DE EVENTOS Rodrigo das Neves Wagner Luiz Gustavo Galves Mählmann Resumo: O presente artigo trata de um projeto de desenvolvimento de uma aplicação para uma produtora de eventos,

Leia mais

Prova Específica Cargo Desenvolvimento

Prova Específica Cargo Desenvolvimento UNIVERSIDADE FEDERAL DO PIAUÍ Centro de Educação Aberta e a Distância CEAD/UFPI Rua Olavo Bilac 1148 - Centro CEP 64.280-001 Teresina PI Brasil Fones (86) 3215-4101/ 3221-6227 ; Internet: www.uapi.edu.br

Leia mais

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES Alexandre Egleilton Araújo, Jaime Willian Dias Universidade Paranaense (Unipar) Paranavaí PR Brasil araujo.ale01@gmail.com, jaime@unipar.br Resumo.

Leia mais

DESENVOLVENDO APLICAÇÕES UTILIZANDO JAVASERVER FACES E MVC

DESENVOLVENDO APLICAÇÕES UTILIZANDO JAVASERVER FACES E MVC DESENVOLVENDO APLICAÇÕES UTILIZANDO JAVASERVER FACES E MVC Felipe Moreira Decol Claro 1, Késsia Rita da Costa Marchi 1 1 Universidade Paranaense (Unipar) Paranavaí PR Brasil felipe4258@hotmail.com, kessia@unipar.br

Leia mais

CURSO DESENVOLVEDOR JAVA Edição Intensiva de Férias

CURSO DESENVOLVEDOR JAVA Edição Intensiva de Férias CURSO DESENVOLVEDOR JAVA Edição Intensiva de Férias O curso foi especialmente planejado para os profissionais que desejam trabalhar com desenvolvimento de sistemas seguindo o paradigma Orientado a Objetos

Leia mais

Cliente/Servidor. Conceitos Gerais. Graça Bressan. Graça Bressan/LARC 2000 1

Cliente/Servidor. Conceitos Gerais. Graça Bressan. Graça Bressan/LARC 2000 1 Cliente/Servidor Conceitos Gerais Graça Bressan Graça Bressan/LARC 2000 1 Forças de marketing que conduzem à arquitetura cliente/servidor "Cliente/Servidor é um movimento irresistível que está reformulando

Leia mais

ORDEM DE SERVIÇO OS 003/DINFO/2013 16/09/2013

ORDEM DE SERVIÇO OS 003/DINFO/2013 16/09/2013 A DIRETORIA DE INFORMÁTICA DINFO DA UNIVERSIDADE DO ESTADO DO RIO DE JANEIRO -UERJ, no uso de suas atribuições legais, estabelece: Art. 1º: Para fins de normatização do Desenvolvimento Tecnológico na UERJ

Leia mais

CURSO DESENVOLVEDOR JAVA Edição 2009

CURSO DESENVOLVEDOR JAVA Edição 2009 CURSO DESENVOLVEDOR JAVA Edição 2009 O curso foi especialmente planejado para os profissionais que desejam trabalhar com desenvolvimento de sistemas seguindo o paradigma Orientado a Objetos e com o uso

Leia mais

Web Technologies. Tópicos da apresentação

Web Technologies. Tópicos da apresentação Web Technologies Tecnologias de Middleware 2004/2005 Hugo Simões hsimoes@di.fc.ul.pt 1 A Web Tópicos da apresentação Tecnologias Web para suporte a clientes remotos (Applets,CGI,Servlets) Servidores Aplicacionais

Leia mais

Padrões de Contagem de Pontos de Função

Padrões de Contagem de Pontos de Função Padrões de Contagem de Pontos de Função Contexto Versão: 1.0.0 Objetivo O propósito deste documento é apresentar os padrões estabelecidos para utilização da técnica de Análise de Pontos de Função no ambiente

Leia mais

(In)Segurança em Aplicações Web. Marcelo Mendes Marinho mmarinho@br.ibm.com Thiago Canozzo Lahr tclahr@br.ibm.com

(In)Segurança em Aplicações Web. Marcelo Mendes Marinho mmarinho@br.ibm.com Thiago Canozzo Lahr tclahr@br.ibm.com (In)Segurança em Aplicações Web Marcelo Mendes Marinho mmarinho@br.ibm.com Thiago Canozzo Lahr tclahr@br.ibm.com Agenda Introdução Porque segurança em aplicações é prioridade? Principais causas de vulnerabilidades

Leia mais

Suplemento de Informações: Esclarecimento de Firewalls de Aplicativos e Revisões do Código do Requisito 6.6

Suplemento de Informações: Esclarecimento de Firewalls de Aplicativos e Revisões do Código do Requisito 6.6 Padrão: Padrão de Segurança de Dados (DSS) Requisito: 6.6 Data: Fevereiro de 2008 Suplemento de Informações: Esclarecimento de Firewalls de Aplicativos e Revisões do Código do Requisito 6.6 Data de liberação:

Leia mais

Linguagem de Programação JAVA. Professora Michelle Nery Nomeclaturas

Linguagem de Programação JAVA. Professora Michelle Nery Nomeclaturas Linguagem de Programação JAVA Professora Michelle Nery Nomeclaturas Conteúdo Programático Nomeclaturas JDK JRE JEE JSE JME JVM Toolkits Swing AWT/SWT JDBC EJB JNI JSP Conteúdo Programático Nomenclatures

Leia mais

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

Nomes: Questão 1 Vulnerabilidade: SQL Injection (Injeção de SQL): Nomes: Questão 1 Vulnerabilidade: SQL Injection (Injeção de SQL): Nos últimos anos uma das vulnerabilidades mais exploradas por usuários mal-intencionados é a injeção de SQL, onde o atacante realiza uma

Leia mais

Tecnologias Web. Java Enterprise Edition

Tecnologias Web. Java Enterprise Edition Tecnologias Web Java Enterprise Edition Cristiano Lehrer, M.Sc. Introdução Java Enterprise Edition (JEE): Plataforma de tecnologias para o desenvolvimento de aplicações corporativas distribuídas. É uma

Leia mais

Programação para a Internet. Prof. M.Sc. Sílvio Bacalá Jr sbacala@gmail.com www.facom.ufu.br/~bacala

Programação para a Internet. Prof. M.Sc. Sílvio Bacalá Jr sbacala@gmail.com www.facom.ufu.br/~bacala Programação para a Internet Prof. M.Sc. Sílvio Bacalá Jr sbacala@gmail.com www.facom.ufu.br/~bacala A plataforma WEB Baseada em HTTP (RFC 2068) Protocolo simples de transferência de arquivos Sem estado

Leia mais

PROJETO PEDAGÓGICO DE CURSOS

PROJETO PEDAGÓGICO DE CURSOS 1 de 6 PROJETO PEDAGÓGICO DE CURSOS BURITREINAMENTOS MANAUS-AM MARÇO / 2015 2 de 6 PACOTES DE TREINAMENTOS BURITECH A Buritech desenvolveu um grupo de pacotes de treinamentos, aqui chamados de BuriPacks,

Leia mais

Essencial ao Desenvolvimento de Software

Essencial ao Desenvolvimento de Software Documento de Requisitos Essencial ao Desenvolvimento de Software De que se trata o artigo? Apresenta o documento de requisitos de software, destacando-o como um dos principais documentos pertinentes ao

Leia mais

SISTEMA DE WORKFLOW PARA MODELAGEM E EXECUÇÃO DE PROCESSOS DE SOFTWARE. Aluno: Roberto Reinert Orientador: Everaldo A. Grahl

SISTEMA DE WORKFLOW PARA MODELAGEM E EXECUÇÃO DE PROCESSOS DE SOFTWARE. Aluno: Roberto Reinert Orientador: Everaldo A. Grahl SISTEMA DE WORKFLOW PARA MODELAGEM E EXECUÇÃO DE PROCESSOS DE SOFTWARE Aluno: Roberto Reinert Orientador: Everaldo A. Grahl Roteiro de apresentação Introdução Objetivos Fundamentação Teórica Workflow Processo

Leia mais

World Wide Web e Aplicações

World Wide Web e Aplicações World Wide Web e Aplicações Módulo H O que é a WWW Permite a criação, manipulação e recuperação de informações Padrão de fato para navegação, publicação de informações e execução de transações na Internet

Leia mais

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

Desenvolvimento e disponibilização de Conteúdos para a Internet Desenvolvimento e disponibilização de Conteúdos para a Internet Por Matheus Orion Principais tecnologias front-end HTML CSS JAVASCRIPT AJAX JQUERY FLASH JAVA APPLET Linguagens que executam no cliente HTML

Leia mais

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064 Sistemas Distribuídos Professora: Ana Paula Couto DCC 064 Sistemas Distribuídos Basedos na Web Capítulo 12 Agenda Arquitetura Processos Comunicação Nomeação Sincronização Consistência e Replicação Introdução

Leia mais

Integrated User Verification Guia de Implementação do Cliente 2015-05-04 Confidencial Versão 2.9

Integrated User Verification Guia de Implementação do Cliente 2015-05-04 Confidencial Versão 2.9 Integrated User Verification Guia de Implementação do Cliente 2015-05-04 Confidencial Versão 2.9 SUMÁRIO Introdução... 2 Finalidade e público-alvo... 2 Sobre este documento... 2 Termos mais utilizados...

Leia mais

Spring: Um suite de novas opções para Java EE

Spring: Um suite de novas opções para Java EE Spring: Um suite de novas opções para Java EE Alberto J Lemos (Dr. Spock) Instrutor Globalcode Ricardo Jun Taniguchi Instrutor Globalcode 1 Agenda > Sobre o Spring Framework > Escopo de integração com

Leia mais

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

3 SERVIÇOS IP. 3.1 Serviços IP e alguns aspectos de segurança 3 SERVIÇOS IP 3.1 Serviços IP e alguns aspectos de segurança Os serviços IP's são suscetíveis a uma variedade de possíveis ataques, desde ataques passivos (como espionagem) até ataques ativos (como a impossibilidade

Leia mais

Desenvolvimento Web TCC-00.226 Turma A-1

Desenvolvimento Web TCC-00.226 Turma A-1 Desenvolvimento Web TCC-00.226 Turma A-1 Conteúdo Arquitetura de Aplicações Distribuídas na Web Professor Leandro Augusto Frata Fernandes laffernandes@ic.uff.br Material disponível em http://www.ic.uff.br/~laffernandes/teaching/2013.2/tcc-00.226

Leia mais

Cumprindo as exigências 6.6 do PCI DSS

Cumprindo as exigências 6.6 do PCI DSS Cumprindo as exigências 6.6 do PCI DSS Em abril de 2008, o Conselho de Padrões de Segurança (SSC, na sigla em inglês) do Setor de Cartões de Pagamento (PCI, na sigla em inglês) publicou um esclarecimento

Leia mais

Instituto de Inovação com TIC. [Junho/ 2009]

Instituto de Inovação com TIC. [Junho/ 2009] Instituto de Inovação com TIC [Junho/ 2009] Segurança em aplicações WEB: A nova fronteira rodrigo.assad@cesar.org.br Redes de Computadores (Histórico) Segurança de Redes (Histórico) Robert Tappan

Leia mais

TEORIA GERAL DE SISTEMAS

TEORIA GERAL DE SISTEMAS TEORIA GERAL DE SISTEMAS Vulnerabilidade dos sistemas e uso indevido Vulnerabilidade do software Softwares comerciais contém falhas que criam vulnerabilidades na segurança Bugs escondidos (defeitos no

Leia mais

Apresentação 3. Sobre a Módulo Risk Manager Academy 3. Portfólio 4

Apresentação 3. Sobre a Módulo Risk Manager Academy 3. Portfólio 4 2 Apresentação 3 Sobre a Módulo Risk Manager Academy 3 Portfólio 4 RM-01 Conheça o Módulo Risk Manager 4 RM-02 Meu Espaço e Navegação Básica 6 RM-03 Modelando a Organização 8 RM-05 Conhecimentos para Gestão

Leia mais

Programação WEB Introdução

Programação WEB Introdução Programação WEB Introdução Rafael Vieira Coelho IFRS Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Sul Campus Farroupilha rafael.coelho@farroupilha.ifrs.edu.br Roteiro 1) Conceitos

Leia mais

SCC-0263. Técnicas de Programação para WEB. Rodrigo Fernandes de Mello http://www.icmc.usp.br/~mello mello@icmc.usp.br

SCC-0263. Técnicas de Programação para WEB. Rodrigo Fernandes de Mello http://www.icmc.usp.br/~mello mello@icmc.usp.br SCC-0263 Técnicas de Programação para WEB Rodrigo Fernandes de Mello http://www.icmc.usp.br/~mello mello@icmc.usp.br 1 Cronograma Fundamentos sobre servidores e clientes Linguagens Server e Client side

Leia mais

Java e Banco de Dados: JDBC, Hibernate e JPA

Java e Banco de Dados: JDBC, Hibernate e JPA Java e Banco de Dados: JDBC, Hibernate e JPA 1 Objetivos Apresentar de forma progressiva as diversas alternativas de persistência de dados que foram evoluindo na tecnologia Java, desde o JDBC, passando

Leia mais

SCE-557. Técnicas de Programação para WEB. Rodrigo Fernandes de Mello http://www.icmc.usp.br/~mello mello@icmc.usp.br

SCE-557. Técnicas de Programação para WEB. Rodrigo Fernandes de Mello http://www.icmc.usp.br/~mello mello@icmc.usp.br SCE-557 Técnicas de Programação para WEB Rodrigo Fernandes de Mello http://www.icmc.usp.br/~mello mello@icmc.usp.br 1 Cronograma Fundamentos sobre servidores e clientes Linguagens Server e Client side

Leia mais

UNIVERSIDADE FEDERAL DE SANTA CATARINA CURSO DE GRADUAÇÃO EM SISTEMAS DE INFORMAÇÃO. Contribuições do MDA para o desenvolvimento de software

UNIVERSIDADE FEDERAL DE SANTA CATARINA CURSO DE GRADUAÇÃO EM SISTEMAS DE INFORMAÇÃO. Contribuições do MDA para o desenvolvimento de software UNIVERSIDADE FEDERAL DE SANTA CATARINA CURSO DE GRADUAÇÃO EM SISTEMAS DE INFORMAÇÃO Contribuições do MDA para o desenvolvimento de software Anna Carla Mohr Verner Helder Eugenio dos Santos Puia Florianópolis,

Leia mais

Aplicativo web para definição do modelo lógico no projeto de banco de dados relacional

Aplicativo web para definição do modelo lógico no projeto de banco de dados relacional Aplicativo web para definição do modelo lógico no projeto de banco de dados relacional Juarez Bachmann Orientador: Alexander Roberto Valdameri Roteiro Introdução Objetivos Fundamentação teórica Desenvolvimento

Leia mais

PROJETO DE COOPERAÇÃO TÉCNICA INTERNACIONAL. Diretrizes e Estratégias para Ciência, Tecnologia e Inovação no Brasil

PROJETO DE COOPERAÇÃO TÉCNICA INTERNACIONAL. Diretrizes e Estratégias para Ciência, Tecnologia e Inovação no Brasil PROJETO DE COOPERAÇÃO TÉCNICA INTERNACIONAL Diretrizes e Estratégias para Ciência, Tecnologia e Inovação no Brasil Projeto 914 BRA5065 - PRODOC-MTC/UNESCO DOCUMENTO TÉCNICO Nº 02 IMPLANTAÇÃO DE 1 (UM)

Leia mais

Java II. Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com

Java II. Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com Java II Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com Java Web Arquitetura Aplicações web são basicamente constituídas de: Requisições Respostas Model View Controller (MVC) O que é MVC? Padrão

Leia mais

MÓDULO Programação para Web 2

MÓDULO Programação para Web 2 MÓDULO Programação para Web 2 Sistemas Web na JEE OBJETIVO DO MÓDULO Arquitetura Web em aplicações JEE Conceitos iniciais Desenvolvimento Web Aplicações web tornam-se mais e mais importantes Mais e mais

Leia mais

jshield Uma Proposta para Segurança de Aplicações Web

jshield Uma Proposta para Segurança de Aplicações Web jshield Uma Proposta para Segurança de Aplicações Web Márcio A. Macêdo¹, Ricardo G. Queiroz¹ ¹Centro de Ensino Unificado de Teresina (CEUT) Teresina, PI Brasil. marcioalmeida@ceut.com.br, ricardoqueiroz@ieee.org

Leia mais

4 O Workflow e a Máquina de Regras

4 O Workflow e a Máquina de Regras 4 O Workflow e a Máquina de Regras O objetivo do workflow e da máquina de regras é definir um conjunto de passos e regras configuráveis. Ao longo de sua execução, um usuário consegue simplificar o seu

Leia mais

SISTEMA GERENCIAL TRATORPLAN

SISTEMA GERENCIAL TRATORPLAN SISTEMA GERENCIAL TRATORPLAN SIGET Fabrício Pereira Santana¹, Jaime William Dias¹, ², Ricardo de Melo Germano¹ ¹Universidade Paranaense (Unipar) Paranavaí PR Brasil fabricioblack@gmail.com germano@unipar.br

Leia mais

Tecnologia Java. Daniel Destro do Carmo Softech Network Informática daniel@danieldestro.com.br

Tecnologia Java. Daniel Destro do Carmo Softech Network Informática daniel@danieldestro.com.br Tecnologia Java Daniel Destro do Carmo Softech Network Informática daniel@danieldestro.com.br Origem da Tecnologia Java Projeto inicial: Oak (liderado por James Gosling) Lançada em 1995 (Java) Tecnologia

Leia mais

SIQ GQF Plugin s WEB (Aplicações WEB) Gestão da Qualidade de Fornecedores

SIQ GQF Plugin s WEB (Aplicações WEB) Gestão da Qualidade de Fornecedores SIQ GQF Plugin s WEB (Aplicações WEB) Gestão da Qualidade de Fornecedores Requerimentos do Software Versão para Microsoft Windows/Unix Dezembro 2006 Bem-Vindo ao to SIQ GQF Plugin s WEB - Gestão da Qualidade

Leia mais

4 Um Exemplo de Implementação

4 Um Exemplo de Implementação 4 Um Exemplo de Implementação Neste capítulo será discutida uma implementação baseada na arquitetura proposta. Para tanto, será explicado como a arquitetura proposta se casa com as necessidades da aplicação

Leia mais

LEI DE ACESSO A INFORMAÇÃO DIREITO DO CIDADÃO

LEI DE ACESSO A INFORMAÇÃO DIREITO DO CIDADÃO DESCRIÇÃO DO SIGAI O SIGAI (Sistema Integrado de Gestão do Acesso à Informação) é uma solução de software que foi desenvolvida para automatizar os processos administrativos e operacionais visando a atender

Leia mais

Web Services. (Introdução)

Web Services. (Introdução) Web Services (Introdução) Agenda Introdução SOA (Service Oriented Architecture) Web Services Arquitetura XML SOAP WSDL UDDI Conclusão Introdução Comunicação distribuída Estratégias que permitem a comunicação

Leia mais

Rede de Laboratórios de Produtividade de Software

Rede de Laboratórios de Produtividade de Software Rede de Laboratórios de Produtividade de Software Testes em aplicações WEB Uma Visão Geral Programa de Capacitação em Testes de Software Desktop system WEB system Ambiente de aplicativo da Web Rede de

Leia mais

HIBERNATE EM APLICAÇÃO JAVA WEB

HIBERNATE EM APLICAÇÃO JAVA WEB HIBERNATE EM APLICAÇÃO JAVA WEB Raul Victtor Barbosa Claudino¹, Ricardo Ribeiro Rufino¹ ¹Universidade Paranaense (Unipar) Paranavaí PR Brasil victtor.claudino@gmail.com, ricardo@unipar.br Resumo: Este

Leia mais

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.

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. Explorando e tratando a falha de Cross-site-scripting (XSS) 1 D E D E Z E M B R O D E 2 0 1 5 Muito pouco falada e com alto nível crítico dentro das vulnerabilidades relatadas, o Cross-site-scripting (XSS)

Leia mais

INDICE 3.APLICAÇÕES QUE PODEM SER DESENVOLVIDAS COM O USO DO SAXES

INDICE 3.APLICAÇÕES QUE PODEM SER DESENVOLVIDAS COM O USO DO SAXES w w w. i d e a l o g i c. c o m. b r INDICE 1.APRESENTAÇÃO 2.ESPECIFICAÇÃO DOS RECURSOS DO SOFTWARE SAXES 2.1. Funcionalidades comuns a outras ferramentas similares 2.2. Funcionalidades próprias do software

Leia mais

Banco de Dados de Músicas. Andre Lima Rocha Campos Osório Pereira Carvalho

Banco de Dados de Músicas. Andre Lima Rocha Campos Osório Pereira Carvalho Banco de Dados de Músicas Andre Lima Rocha Campos Osório Pereira Carvalho Definição Aplicação Web que oferece ao usuário um serviço de busca de músicas e informações relacionadas, como compositor, interprete,

Leia mais

J2EE. J2EE - Surgimento

J2EE. J2EE - Surgimento J2EE Java 2 Enterprise Edition Objetivo: Definir uma plataforma padrão para aplicações distribuídas Simplificar o desenvolvimento de um modelo de aplicações baseadas em componentes J2EE - Surgimento Início:

Leia mais

Proposta de pentest. O pentest realizado vai desde ataques aos servidores até testes na programação das aplicações com tentativas reais de invasão;

Proposta de pentest. O pentest realizado vai desde ataques aos servidores até testes na programação das aplicações com tentativas reais de invasão; initsec Proposta de pentest 1. O que é? Pentest (Penetration Test) é uma avaliação de maneira realista da segurança empregada em aplicações web e infraestruturas de TI no geral. O Pentest constitui da

Leia mais

Fundamentos da Plataforma Java EE. Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br)

Fundamentos da Plataforma Java EE. Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br) Fundamentos da Plataforma Java EE Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br) Como a plataforma Java EE trata o SERVIÇO DE NOMES Serviço de Nomes Num sistema distribuído os componentes necessitam

Leia mais

Contrato de Serviço (SLA) Para Hipermercados Extra Por Esperança_TI S.A

Contrato de Serviço (SLA) Para Hipermercados Extra Por Esperança_TI S.A Esperança_TI S.A S/A Contrato de Serviço (SLA) Para Hipermercados Extra Por Esperança_TI S.A 25/11/2014 Gerador do documento: Gerente de Negociação: Marcos Alves de Oliveira Marcos Antônio de Morais Aprovação

Leia mais

1 Criar uma entity a partir de uma web application que usa a Framework JavaServer Faces (JSF)

1 Criar uma entity a partir de uma web application que usa a Framework JavaServer Faces (JSF) Sessão Prática II JPA entities e unidades de persistência 1 Criar uma entity a partir de uma web application que usa a Framework JavaServer Faces (JSF) a) Criar um Web Application (JPAsecond) como anteriormente:

Leia mais

Arquiteturas de Aplicações Distribuídas

Arquiteturas de Aplicações Distribuídas Arquiteturas de Aplicações Distribuídas Fernando Albuquerque 061-2733589 fernando@cic.unb.br www.cic.unb.br/docentes/fernando Tópicos Introdução. HTTP / CGI. API sockets. JDBC. Remote Method Invocation.

Leia mais

JAVA ENTERPRISE EDITION: PERSISTÊNCIA DE BANCO DE DADOS

JAVA ENTERPRISE EDITION: PERSISTÊNCIA DE BANCO DE DADOS COLÉGIO ESTADUAL ULYSSES GUIMARÃES CURSO TÉCNICO PROFISSIONALIZANTE EM INFORMÁTICA ERINALDO SANCHES NASCIMENTO JAVA ENTERPRISE EDITION: PERSISTÊNCIA DE BANCO DE DADOS FOZ DO IGUAÇU 2013 SUMÁRIO 1. PERSISTÊNCIA

Leia mais

RSA ADAPTIVE AUTHENTICATION

RSA ADAPTIVE AUTHENTICATION RSA ADAPTIVE AUTHENTICATION Uma plataforma completa de autenticação e detecção de fraudes RESUMO GERAL Mede o risco de log-in e pós-log-in avaliando mais de 100 indicadores em tempo real Determina os requisitos

Leia mais

Programação para Internet II

Programação para Internet II Programação para Internet II Aulas 01 e 02 Prof. Fernando Freitas Costa http://blog.fimes.edu.br/fernando nando@fimes.edu.br Conteúdo Programático Instalação e configuração básica do Eclipse Indigo e do

Leia mais

UNIVERSIDADE. Sistemas Distribuídos

UNIVERSIDADE. Sistemas Distribuídos UNIVERSIDADE Sistemas Distribuídos Ciência da Computação Prof. Jesus José de Oliveira Neto Web Services Web Services Existem diferentes tipos de comunicação em um sistema distribuído: Sockets Invocação

Leia mais

SISTEMA DE CONTROLE DE DADOS CLIMÁTICOS NA WEB NO AUXILIO À AGRICULTURA RESUMO SYSTEM CONTROL OF CLIMATIC DATA IN THE WEB TO ASSIST THE AGRICULTURE

SISTEMA DE CONTROLE DE DADOS CLIMÁTICOS NA WEB NO AUXILIO À AGRICULTURA RESUMO SYSTEM CONTROL OF CLIMATIC DATA IN THE WEB TO ASSIST THE AGRICULTURE SISTEMA DE CONTROLE DE DADOS CLIMÁTICOS NA WEB NO AUXILIO À AGRICULTURA CAROLINE VISOTO 1 EDUARDO RUBIN 2 THIAGO X. V. OLIVEIRA 3 WILINGTHON PAVAN 4 JOSÉ MAURÍCIO CUNHA FERNANDES 5 CRISTIANO ROBERTO CERVI

Leia mais

Metas de um Sistema Distribuído

Metas de um Sistema Distribuído Metas de um Sistema Distribuído Sistemas Distribuídos Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e Tecnologia do

Leia mais

FACULDADE DE CIÊNCIAS SOCIAIS E APLICADAS DO PARANÁ. Sistema de Gestão Escolar PROJETO FINAL Schola Ratio Versão 8

FACULDADE DE CIÊNCIAS SOCIAIS E APLICADAS DO PARANÁ. Sistema de Gestão Escolar PROJETO FINAL Schola Ratio Versão 8 FACULDADE DE CIÊNCIAS SOCIAIS E APLICADAS DO PARANÁ Sistema de Gestão Escolar PROJETO FINAL Schola Ratio Versão 8 CURITIBA Nov 2012 DJULLES IKEDA OSNIR FERREIRA DA CUNHA Sistema de Gestão Escolar PROJETO

Leia mais

PRODUTO 1 (CONSTRUÇÃO DE PORTAL WEB)

PRODUTO 1 (CONSTRUÇÃO DE PORTAL WEB) RELATÓRIO DE ENTREGA DO PRODUTO 1 (CONSTRUÇÃO DE PORTAL WEB) PARA A ELABORAÇÃO DOS PLANOS MUNICIPAIS DE GESTÃO INTEGRADA DE RESÍDUOS SÓLIDOS PMGIRS PARA OS MUNICÍPIOS DE NOVO HORIZONTE, JUPIÁ, GALVÃO,

Leia mais

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

Desenvolvimento de aplicação web com framework JavaServer Faces e Hibernate Desenvolvimento de aplicação web com framework JavaServer Faces e Hibernate Tiago Peres Souza 1, Jaime Willian Dias 1,2 ¹Universidade paranaense (Unipar) Paranavaí PR Brasil tiagop_ti@hotmail.com 2 Universidade

Leia mais

CURSO DESENVOLVEDOR JAVA Edição 2010

CURSO DESENVOLVEDOR JAVA Edição 2010 CURSO DESENVOLVEDOR JAVA Edição 2010 O curso foi especialmente planejado para os profissionais que desejam trabalhar com desenvolvimento de sistemas seguindo o paradigma Orientado a Objetos e com o uso

Leia mais

COMPARANDO APLICAÇÃO WEB SERVICE REST E SOAP

COMPARANDO APLICAÇÃO WEB SERVICE REST E SOAP COMPARANDO APLICAÇÃO WEB SERVICE REST E SOAP Cleber de F. Ferreira¹, Roberto Dias Mota¹. ¹Universidade Paranaense (Unipar) Paranavaí PR Brasil cleberferreirasi@hotmail.com, motaroberto@hotmail.com Resumo.

Leia mais

Use a Cabeça! FREEMAN, Eric e Elisabeth. HTML com CSS e XHTML BASHMAN, Brian / SIERRA Kathy / BATES, Bert. Servlets & JSP

Use a Cabeça! FREEMAN, Eric e Elisabeth. HTML com CSS e XHTML BASHMAN, Brian / SIERRA Kathy / BATES, Bert. Servlets & JSP Use a Cabeça! FREEMAN, Eric e Elisabeth. HTML com CSS e XHTML BASHMAN, Brian / SIERRA Kathy / BATES, Bert. Servlets & JSP Software cliente: browser e outros Protocolo HTTP Infraestrutura de transporte

Leia mais

Análise de Vulnerabilidades em Aplicações WEB

Análise de Vulnerabilidades em Aplicações WEB Análise de Vulnerabilidades em Aplicações WEB Apresentação Luiz Vieira Construtor 4Linux Analista e Consultor de Segurança 15 anos de experiência em TI Pen-Tester Articulista sobre Segurança de vários

Leia mais

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse Como criar um EJB Criando um projeto EJB com um cliente WEB no Eclipse Gabriel Novais Amorim Abril/2014 Este tutorial apresenta o passo a passo para se criar um projeto EJB no Eclipse com um cliente web

Leia mais