TG Yii Framework

78
FACULDADE DE TECNOLOGIA DE CARAPICUÍBA ANTONIO CARLOS DE OLIVEIRA EVERTON CHAGAS WAGNER GUTIERREZ SEGURANÇA EM APLICAÇÕES WEB: IMPLEMENTAÇÃO DO ALGORITMO BLOWFISH NA AUTENTICAÇÃO DE USUÁRIOS EM AMBIENTE PHP COM SGBDR MYSQL TRABALHO DE GRADUAÇÃO Carapicuíba, 2013

Transcript of TG Yii Framework

  • FACULDADE DE TECNOLOGIA DE CARAPICUBA

    ANTONIO CARLOS DE OLIVEIRA

    EVERTON CHAGAS

    WAGNER GUTIERREZ

    SEGURANA EM APLICAES WEB: IMPLEMENTAO DO ALGORITMO BLOWFISH NA AUTENTICAO

    DE USURIOS EM AMBIENTE PHP COM SGBDR MYSQL

    TRABALHO DE GRADUAO

    Carapicuba, 2013

  • ANTONIO CARLOS DE OLIVEIRA

    EVERTON CHAGAS

    WAGNER GUTIERREZ

    SEGURANA EM APLICAES WEB: IMPLEMENTAO DO ALGORITMO BLOWFISH NA AUTENTICAO

    DE USURIOS EM AMBIENTE PHP COM SGBDR MYSQL

    Trabalho apresentado como exigncia para

    obteno do Ttulo de Tecnlogo em Segurana da Informao da Faculdade de Tecnologia de Carapicuba.

    Orientador: Prof. Luciano Deluqui Vasques

    Carapicuba, 2013

  • ANTONIO CARLOS DE OLIVEIRA

    EVERTON CHAGAS

    WAGNER GUTIERREZ

    SEGURANA EM APLICAES WEB IMPLEMENTAO DO ALGORITMO BLOWFISH NA AUTENTICAO

    DE USURIOS EM AMBIENTE PHP COM SGBDR MYSQL

    Essa pesquisa foi julgada e aprovada para obteno do Ttulo de Tecnlogo em Anlise de Sistemas e Tecnologia da Informao, da Faculdade de Tecnologia de Carapicuba.

    Carapicuba, 11 de dezembro de 2013.

    Prof. Dr. Walter Alosio Santana

    Diretor da Fatec - Carapicuba

    Banca examinadora

    ______________________________

    Prof. Luciano Deluqui Vasques

    ______________________________

    Prof. Patrcia Lima Rocha

    ______________________________

    Prof. Renato Fava Martelli

  • Dedicamos esse trabalho primeiramente a Deus Todo Poderoso, a todos nossos familiares (pais, irmos e esposas), amigos e professores que nos instruram e apoiaram para chegarmos at aqui, principalmente ao prof. Deluqui que nos deu uma direo em meio s dificuldades encontradas.

  • Uma pessoa inteligente resolve um problema, um sbio o previne.

    Albert Einstein

  • RESUMO

    Devido ao avano da tecnologia, houve um ganho significativo no desempenho dos componentes computacionais, tais como processador e memria RAM. Esse fato facilitou a execuo de aes danosas realizadas por malfeitores, como por exemplo, no processo de decifrar informaes sigilosas criptografadas. Pois, com um computador pessoal (Desktop) atual e utilizando tcnicas especializadas, estes podem conseguir descobrir senhas criptografadas por algoritmos hashes renomados, que trafegam pela rede ou que ficam armazenadas em bancos de dados.

    Neste contexto, o objetivo principal deste trabalho a implementao do framework Yii para criao de uma aplicao web, juntamente como algoritmo de criptografia Blowfish, que proporcionar uma maior segurana contra invaso em sistemas de aplicaes web que utilizam bancos de dados para armazenamento de senhas de seus respectivos usurios. Com isso pretende-se trocar os algoritmos nativos utilizados no MySQL (que de acordo com diversas pesquisas so vulnerveis) por um algoritmo mais robusto, alterando-se poucas linhas de cdigo.

    Palavras-chave: Framework. Criptografia. Segurana em aplicaes web.

  • ABSTRACT

    Due to advancement in technology, there was a significant gain in performance computer components such as CPU and RAM. This fact facilitated the execution of harmful actions carried out by malefactors, for example, in the process to decipher encrypted sensitive information.

    Because, with a current personal computer (Desktop) and using specialized techniques, they can get find out passwords encrypted with renowned hashes algorithms, that travels over the network or that are stored in databases.

    In this context, the main objective is the implementation of the Yii framework for creating a web application, along with the Blowfish encryption algorithm, which will provide greater security against intrusion in systems of the web applications that use the database to store users and passwords. Thus it is intended to replace the native algorithms used in the MySQL (Wich according to several researches are vulnerable) for a more robust algorithm, by changing a few lines of code.

    Keywords: Framework. Encryption. Web application security.

  • LISTA DE FIGURAS

    Figura 1Cifrando um texto .......................................................................................................... 18 Figura 2Algoritmo de Hash ......................................................................................................... 21 Figura 3Funo Crypt Exemplo de entrada .............................................................................. 25 Figura 4Funo Crypt Exemplo de sada ................................................................................. 25 Figura 5Banco de dados Modelo de abstrao de dados .......................................................... 33 Figura 6Banco de dados Modelo de abstrao de dados mais detalhado ................................. 33 Figura 7Simbologia - Banco de dados Modelo de abstrao de dados .................................... 34 Figura 8Modelo relacional........................................................................................................... 35 Figura 9Modelo de entidade/relacionamento .............................................................................. 35 Figura 10Modelo de dados baseado em objetos .......................................................................... 36 Figura 11Modelo de dados semi-estruturado .............................................................................. 36 Figura 12Modelo ORM ............................................................................................................... 40 Figura 13Estrutura comum dos frameworks ............................................................................... 42 Figura 14Comparao entre frameworks Socialcompare ......................................................... 44 Figura15Yii Framework .............................................................................................................. 46 Figura 16Base do Yii ................................................................................................................... 47 Figura 17Estrutura MVC ............................................................................................................. 51 Figura 18Instalao Yii framework ............................................................................................. 55 Figura 19Configurao Yii Editando arquivo .bat do Yii ........................................................ 56 Figura 20Criando uma aplicao web ......................................................................................... 56 Figura 21Testando a aplicao web............................................................................................. 57 Figura 22Aplicao web Criando banco de dados ................................................................... 58 Figura 23Configurao Yii Acessando o shell do Yii .............................................................. 60 Figura 24Configurao Yii Criando o Model de uma tabela ................................................... 60 Figura 25Configurao Yii Criando o CRUD de uma tabela ................................................... 60 Figura 26Senha no criptografada ............................................................................................... 66 Figura 27Senha cifrada com o algoritmo SHA1 ......................................................................... 66 Figura 28Senha cifrada com o algoritmo MD5 ........................................................................... 66 Figura 29Senha cifrada com o algoritmo Blowfish ..................................................................... 66 Figura 30Decifrao do hash MD5 com o MD5MyAddr ........................................................... 67 Figura 31Decifrao do hash SHA1 com o MD5Decrypter ....................................................... 68 Figura 32Comunicado Microsoft................................................................................................. 70 Figura 33Comunicado PHP ......................................................................................................... 71

  • LISTA DE TABELAS

    Tabela 1 Tabela simples ............................................................................................................. 31 Tabela 2 Viso dos dados ........................................................................................................... 32 Tabela 3 Ligao entre tabelas 1 ................................................................................................ 37 Tabela 4 Ligao entre tabelas 2 ................................................................................................ 38 Tabela 5 Ligao entre tabelas 3 ................................................................................................ 38 Tabela 6 Comparao entre frameworks .................................................................................... 45

  • LISTA DE ABREVIATURAS, SIGLAS E SMBOLOS

    Abreviaturas

    CMD - Command Ex. = exemplo MB = Megabyte GB = Gigabyte GHz = Giga hertz TB = Terabyte p. = pgina

    Siglas ABNT - Associao Brasileira de Normas Tcnicas AES - Advanced Encryption Standard API - Interface de Programao de Aplicativos AR - Active Record ASTI - Anlise de Sistemas e Tecnologia da Informao CERT.br - Centro de Estudos, Resposta e Tratamento de Incidentes de Segurana no Brasil CMS - Content Management System CPU - Central Processing Unit CRUD - Create-Read-Update-Delete CSS - Cascading Style Sheets DAO - Data Access Objects DB - Data Base DES - Data Encryption Standard DRY - Dont Repeat Yourself ER - Entidade Relacionamento FATEC - Faculdade de Tecnologia FK - Foreign Key FTP - File Transfer Protocol GPL - General Public Licence HTTP - Hypertext Transfer Protocol HTTPS - Hypertext Transfer Protocol Secure IBM - International Business Machines IEC - International Electrotechnical Commission IMAP - Internet Message Access Protocol ISO - International Organization for Standardization MD5 - Message-Digest algorithm 5 MVC - Model-View-Controler

  • NASA - National Aeronautics and Space Administration NBR - Norma Brasileira OO - Orientao Objetos ORM - Object-Relational Mapping PC - Personal Computer PDF - Portable Document Format PDO - PHP Data Object PHP - Hypertext Preprocessor PK - Primary Key POO - Programao Orientada a Objetos POP3 - Post Office Protocol RAM - Random Access Memory RBAC - role-based access control SGBD - Sistema de Gerenciamento de Banco de Dados SGBDR - Sistema de Gerenciamento de Banco de Dados Relacionais SHA Secure Hash Algorithm SI - Segurana da Informao SMTP - Simple Mail TransferProtocol SO - Sistema Operacional SOAP - Simple Object Access Protocol SQL - Structured Query Language SSH - Secure Shell SSL - Secure Socket Layer TI - Tecnologia da Informao UDP User Datagram Protocol UI - User Interface WAMP - Acrnimo para a combinao: Windows, Apache, MySQL e PHP WEB - Termo utilizado para referenciar o WWW WWW - World Wide Web XML - Extensible Markup Language XOR - OR Exclusive (Programao) YII - Acrnimo de yes, representa os adjetivos fcil, eficiente e extensvel

    Smbolos - Marca Registrada 1:1 = Um pra um 1:N = Um pra vrios N:1 = Vrios para um N:N = Vrios para vrios

  • SUMRIO

    1 INTRODUO .......................................................................................................................... 14 1.1. OBJETIVO GERAL ........................................................................................................... 14 1.2. OBJETIVO ESPECFICO .................................................................................................. 15 1.3. JUSTIFICATIVA ............................................................................................................... 15

    2 SEGURANA EM APLICAES WEB ................................................................................. 16 2.1. SEGURANA DA INFORMAO ................................................................................. 16

    2.1.1. Segurana na internet................................................................................................... 17 2.1.2. Explorao de vulnerabilidades ................................................................................... 17 2.1.3. Contas e senhas ............................................................................................................ 18

    2.2. CRIPTOGRAFIA ............................................................................................................... 18 2.2.1. Algoritmos de Chave Simtrica ................................................................................... 19 2.2.2. Algoritmos de Chave Assimtrica ............................................................................... 19 2.2.3. Funo Hash ................................................................................................................ 20 2.2.4. Funo Crypt ............................................................................................................... 23

    2.3. TIPOS DE ATAQUES COMUNS ..................................................................................... 28 2.4. FERRAMENTAS E TCNICAS PARA DECIFRAR SENHAS ...................................... 30 2.5. BANCO DE DADOS ......................................................................................................... 31

    2.5.1. Viso dos dados ........................................................................................................... 32 2.5.2. Abstrao dos dados .................................................................................................... 32 2.5.3. Modelo de dados .......................................................................................................... 34 2.5.4. Sistema de Gerenciamento de Banco de Dados .......................................................... 37 2.5.5. Bancos de Dados Relacionais ...................................................................................... 37 2.5.6. Sistema de Gerenciamento de Bancos de Dados Relacionais ..................................... 38 2.5.7. SGBDRs mais utilizados ............................................................................................. 39 2.5.8. Por que Escolher o MySQL? ....................................................................................... 39

    2.6. FRAMEWORK DE DESENVOLVIMENTO WEB ......................................................... 39 2.6.1. ORM (Object-Relational Mapping)............................................................................. 40 2.6.2. Estrutura MVC (Model-View-Controller) .................................................................. 41 2.6.3. Estrutura RBAC (Role Base Access Control) ............................................................. 41 2.6.4. Atuais frameworks PHP no Mercado: ......................................................................... 42 2.6.5. Estrutura comum dos frameworks ............................................................................... 42 2.6.6. Por que Escolher o Framework Yii?............................................................................ 43 2.6.7. Histria do Yii ............................................................................................................. 46

  • 2.6.8. Caractersticas do Yii .................................................................................................. 46 2.6.9. Como o Yii Funciona? ................................................................................................. 48 2.6.10. Ligao do Yii com o banco de dados ....................................................................... 51

    3 METODOLOGIA ....................................................................................................................... 53 3.1. DESENVOLVIMENTO DE APLICAO WEB COM ACESSO A BANCOS DE DADOS ..................................................................................................................................... 53 3.2. DEFINIO DO AMBIENTE DE TESTES ..................................................................... 53

    3.2.1. Hardware utilizado ...................................................................................................... 54 3.2.2. Softwares utilizados ..................................................................................................... 54

    3.3. PR-REQUISITOS DO FRAMEWORK YII .................................................................... 54 3.4. CRIAO DA APLICAO WEB .................................................................................. 55

    Instalando o framework Yii ................................................................................................... 55 3.5. TESTE ................................................................................................................................ 57 3.6. ESTRUTURA DO BANCO DE DADOS .......................................................................... 58

    3.6.1. Criao do banco de dados no MySQL ....................................................................... 58 3.6.2. Criao das tabelas no MySQL ................................................................................... 59

    3.7. CONFIGURANDO O YII PARA INTERAGIR COM BANCO CRIADO NO MYSQL 59 3.7.1. Gerao da estrutura MVC .......................................................................................... 60 3.7.2. Personalizar o menu da pgina principal ..................................................................... 61 3.7.3. Alterando o mtodo de autenticao ........................................................................... 62 3.7.4. Configurando a funo bCrypt .................................................................................... 62 3.7.5. Validando usurio e senha no formato Blowfish......................................................... 64 3.7.6. Testando o novo mtodo de autenticao do web site ................................................. 64

    3.8. LINHA DE TRABALHO ................................................................................................... 65 3.8.1. VISUALIZAO DOS USURIOS E SENHAS CRIADOS ................................... 65 3.8.2. TESTANDO A SEGURANA DOS ALGORITIMOS SHA1, MD5 E BLOWFISH 67

    4 DISCUSSO E RESULTADOS................................................................................................ 69 4.1. DIFICULDADES E LIMITAES ENCONTRADAS .................................................... 69 4.2. INDICADORES ANALISADOS ...................................................................................... 70

    5 CONSIDERAES FINAIS ..................................................................................................... 72 TRABALHOS FUTUROS ............................................................................................................ 73 ANEXO A: LISTA DE SITES PARA DECIFRAR HASHES MD5 E SHA1 ............................. 74 REFERNCIAS ............................................................................................................................ 76

  • 14

    1 INTRODUO

    Nestes ltimos tempos houve um considervel aumento no nmero de aplicaes web, desde sua utilizao para sistemas complexos como CMS, e-commerce ou at mesmo para web sites caseiros.

    Porm, ocorreu tambm a evoluo da tecnologia computacional. Uma velocidade maior de processamento ajudou e aumentou mais ainda as chances de um malfeitor decifrar as senhas codificadas pelos algoritmos de hash mais utilizados atualmente, tais como MD5 e SHA1.

    A fora de uma senha tambm conta muito para a dificuldade de decifrao da mesma, porm, as pessoas que a utilizam, normalmente criam senhas fracas, fceis para sua memorizao, o que as tornam de fcil deduo, sendo esse o principal fator para descobri-las, mesmo estando criptografadas.

    Neste contexto, surge ento a necessidade de escolher um algoritmo de criptografia altamente confivel para assegurar que dados confidenciais e valiosos estejam preservados contra ataques de malfeitores.

    Este trabalho consiste em implantar da maneira mais simples possvel o framework Yii, que incorpora o algoritmo de criptografia Blowfish, para ento criar um modelo de aplicao web que servir como base para projetos similares.

    Este trabalho est dividido em captulos da seguinte forma: O captulo 1, contendo introduo, objetivos gerais, objetivos especficos e a justificativa. O captulo 2 contm os conceitos bsicos sobre de segurana da informao, banco de

    dados, frameworks baseados nos padres MVC com destaque para criptografia e seus principais algoritmos.

    O captulo 3, onde ser mostrada toda a metodologia utilizada para criar um cenrio de uma aplicao web feita com o framework Yii e integrada ao banco de dados MySQL.

    No captulo 4 so apresentadas anlises e discusses a respeito deste trabalho, das pesquisas e testes realizados.

    E por fim no captulo 5 so apresentadas as concluses e recomendaes relacionadas a este estudo.

    1.1. OBJETIVO GERAL

    O objetivo geral deste trabalho implementar um algoritmo de criptografia na sesso de login de uma aplicao web, com a pretenso de aumentar a segurana para as senhas que trafegaro pela rede e que ficaro armazenadas em um banco de dados.

  • 15

    1.2. OBJETIVO ESPECFICO

    Criar uma aplicao web com todas as caractersticas de um sistema seguro e funcional, porm, sem as dificuldades e complexidade da criao de classes, funes e de outras configuraes na linguagem PHP, o que necessitaria um longo tempo e experincia em programao Orientada a Objetos (OO). Por isso recomenda-se o uso de um framework para facilitar e tornar prtico o processo de desenvolvimento de uma aplicao web.

    Demonstrar por meio de ferramentas e mtodos como decifrar senhas criptografadas pelos algoritmos SHA1 ou MD5 e substitu-los pelo robusto algoritmo de criptografia Blowfish.

    1.3. JUSTIFICATIVA

    Devido falta de segurana nos ambientes de internet, necessrio que as rotinas de autenticao em aplicaes web sejam seguras o suficiente para impedir que malfeitores consigam decifrar as senhas criptografadas que protegem os dados confidenciais de login. Esta falta de segurana requer a utilizao de um algoritmo de criptografia robusto.

    Este trabalho destina-se aos profissionais do ramo de desenvolvimento de aplicaes web e tambm a usurios comuns que tenham interesse em aprender conceitos bsicos e importantes, relacionados ao tema deste projeto.

  • 16

    2 SEGURANA EM APLICAES WEB

    2.1. SEGURANA DA INFORMAO

    De acordo com a [ABNT 05], informao um ativo essencial para os negcios de uma organizao e necessita ser adequadamente protegido. No somente para uma organizao, a informao pode tambm pertencer a um individuo qualquer e pode ser armazenada eletronicamente, impressa, escrita em papel e transmitida por diversos meios.

    Segurana da informao a proteo da informao por meio da implementao de um conjunto de controles adequados, incluindo polticas, procedimentos, estruturas organizacionais e funes de software e hardware.

    Segundo [STALLINGS 08], Ataques segurana so classificados como: Ataques passivos - que incluem leitura no autorizada de uma mensagem de arquivo e

    anlise de trfego. Ataques ativos - como modificao de mensagens ou arquivos e negao de servio.

    Um mecanismo de segurana qualquer processo (ou um dispositivo incorporado a tal processo) projetado para detectar, impedir ou permitir a recuperao de um ataque segurana. Alguns exemplos de mecanismos so algoritmos de criptografia, assinaturas digitais e protocolos de autenticao.

    Os atributos que devem ser protegidos em segurana da informao so:

    Autenticidade - propriedade que garante a origem e a identidade de quem est enviando a informao e que esta no foi alterada ao longo de um processo.

    Confidencialidade - propriedade que limita o acesso a informao somente para usurios autorizados pelo proprietrio desta informao.

    Disponibilidade - propriedade que garante que a informao esteja sempre disponvel para o uso, por aqueles usurios autorizados pelo proprietrio da informao.

    Integridade - propriedade que garante que a informao manipulada mantenha todas as caractersticas originais estabelecidas pelo proprietrio, incluindo controle de mudanas e garantia do seu ciclo de vida (nascimento, manuteno e destruio).

    Irrevogabilidade - propriedade que garante a impossibilidade de negar a autoria em relao a uma transao anteriormente feita.

    Este trabalho ir explanar sobre segurana da informao no quesito confidencialidade da senha de login, transmitida de uma aplicao web e armazenada em um banco de dados.

  • 17

    2.1.1. Segurana na internet

    Atualmente a internet tornou-se indispensvel para realizao de diversas tarefas do dia-a-dia, desde a comunicao entre pessoas at a realizao de transaes bancarias.

    De acordo com pesquisas, a maioria das pessoas tem uma falsa sensao de segurana, pensando que no sero alvos de ataques de malfeitores. Com essa sensao de segurana acabam no tomando as devidas precaues e ficam sujeitas a terem seus dados supervisionados, capturados ou modificados por malfeitores. Por esse motivo importante que todos estejam informados dos riscos aos quais esto expostos, para assim tomarem as medidas preventivas necessrias. [CSI 12]

    Os tipos de ameaas podem ser:

    Naturais Ameaas decorrentes de fenmenos da natureza, como incndios naturais, enchentes, terremotos, tempestades, poluio, etc.

    Involuntrias Ameaas inconscientes, quase sempre causadas pelo desconhecimento. Podem ser causados por acidentes, erros, falta de energia, etc.

    Voluntrias Ameaas propositais causadas por agentes humanos como hackers, invasores, espies, ladres, criadores e disseminadores de vrus de computador, incendirios.

    Neste trabalho o tipo de ameaa a ser explorada a voluntria, os ataques deste tipo normalmente ocorrem com diversos propsitos, visando diferentes alvos e usando variadas tcnicas. Qualquer computador conectado a internet pode ser alvo.

    Os motivos destes ataques vo de simples atos de diverso at a execuo de aes criminosas. Um dos principais motivos de ataque capturar e utilizar informaes confidenciais de usurios para aplicar golpes. [CSI 12]

    2.1.2. Explorao de vulnerabilidades

    Explorao de vulnerabilidades pode ser vista como uma situao, que quando explorada por um malfeitor, pode resultar em uma violao de segurana.

    Vulnerabilidades podem ser falhas de segurana no projeto, na implementao ou na configurao de softwares ou equipamentos de rede.

    Neste trabalho a vulnerabilidade envolve os algoritmos de criptografia utilizados para a proteo da senha de login dos usurios de uma aplicao web. Este ataque acontece quando o malfeitor, utilizando-se de mtodos e ferramentas sofisticadas consegue interceptar o envio dos dados ou acessar diretamente o banco onde estes dados ficam armazenados. [CSI 12]

  • 2.1.3. Contas e senhas

    Segundo [TANENBAUMidentificao nica que representaatrelada a uma lista de controle de acesso

    Existem 3 tipos de

    Aquilo que o usurioindividuo.

    Ex. Impresso digi Aquilo que o usurio

    Ex. Carto de identificao, Aquilo que o usurio

    possa identificEx. Senha, frase de segurana, etc

    Este ltimo mecanismointernet. [TAN 02]

    Neste trabalho o tipo de mecanismo de autenticao que ser estudado ser usurio sabe, mais especificamente no fator senha.

    2.2. CRIPTOGRAFIA

    A palavra criptografia vem das palavras gregasque significam "escrita secreta". So tcnicas em que aoriginal para outra ilegvel, este processo chamado cifragem.decifragem.

    A informao codificada usando uma frmula (algoritmo), que tambm ser utilizada depois para decodificar a mesma mensagem. a chave secreta no conseguir

    A mensagem original

    Figura 1Cifrando um texto

    Fonte: Autoria prpria, baseada na imagem28/11/2013.

    TANENBAUM 02], uma conta de usurio,como o prprio nome sugere, uma que representa um usurio em um sistema ou servio

    atrelada a uma lista de controle de acesso define o que o usurio pode acessar

    Existem 3 tipos de mecanismos de autenticao.

    Aquilo que o usurio : qualquer parte do corpo que possa identificar um

    igital, identificao de retina, sequncia de DNA, padro de voz, Aquilo que o usurio tem: qualquer objeto que possa identificar um individuo.

    Carto de identificao, SecurityToken, software token ou telefone celularAquilo que o usurio sabe: uma informao que somente a pessoa saibapossa identific-la.

    Senha, frase de segurana, etc.

    mecanismo o mais utilizado para o acesso a servios

    trabalho o tipo de mecanismo de autenticao que ser estudado ser sabe, mais especificamente no fator senha.

    A palavra criptografia vem das palavras gregas krypts, "escondido" e grphein, "escrita",ficam "escrita secreta". So tcnicas em que a informao transformada da sua for

    original para outra ilegvel, este processo chamado cifragem. O processo inverso chama

    A informao codificada usando uma frmula (algoritmo), que tambm ser utilizada depois para decodificar a mesma mensagem. Portanto, aps essa transformao

    no conseguir decifr-la. [TAN 02]

    original chamada de "texto claro".

    na imagem:.Acessado em

  • 19

    Criptografia um ramo da matemtica e parte da criptologia. A criptografia vai alm da cifragem e decifragem. Criptoanlise a tcnica de tentar descobrir o contedo de mensagens cifradas, e seus praticantes so chamados criptoanalistas ou malfeitores. [TAN 02]

    A criptografia serve principalmente para proteger dados contra acessos inapropriados, tanto os que trafegam pela internet como os j gravados o computador.

    Basicamente a criptografia dividida em dois tipos, estes so: chaves simtricas e chaves assimtricas, que sero explicadas no prximo tpico.

    2.2.1. Algoritmos de Chave Simtrica

    Algoritmos de Chave Simtrica, tambm conhecidos como Algoritmos de Chave nica, utilizam uma mesma chave tanto para cifrar como para decifrar uma informao. Os algoritmos simtricos exigem que a chave seja mantida em segredo, apenas quem a enviou e o receptor devm possu-la. Com isso, utilizar este mtodo um pouco complicado, pois, deve-se ter um canal seguro para transmitir a chave para o receptor. [STA 08]

    Algoritmos de Chave Simtrica em destaque

    AES (Rijndael) Blowfish MARS RC6 Serpent

    2.2.2. Algoritmos de Chave Assimtrica

    Algoritmos de Chave Assimtrica (chave-pblica) utilizam chaves distintas, uma para cifrar e outra para decifrar uma informao, contudo, a chave para decifrar no pode ser conseguida apenas com a chave que cifrou a informao, porm, as duas tm relao entre si.

    Nos algoritmos assimtricos, as chaves so sempre geradas aos pares: uma para cifrar e outra para decifrar. Com os algoritmos assimtricos podemos tornar a chave de cifrao pblica, disponibilizando-a em um site de acesso ao pblico, resolvendo o problema das chaves simtricas.

    Tendo a chave pblica em posse qualquer pessoa pode enviar uma mensagem cifrada por esta chave, porm, somente o destinatrio (aquele que disponibilizou a chave pblica) poder decifr-la com sua chave privada. [STA 08]

    Algoritmos simtricos so mais eficientes que os assimtricos em relao velocidade para cifrar os dados, permitindo altas taxas de cifrao, um algoritmo de chave assimtrica pode ser centenas ou milhares de vezes mais lento do que um algoritmo de chave simtrica de qualidade equivalente. J os algoritmos assimtricos tm a vantagem de poder compartilhar a chave pblica

  • 20

    sem problemas. Sendo assim, para ter um melhor aproveitamento, devem-se utilizar os dois algoritmos em conjunto, primeiro cifrar os dados que geralmente so mais pesados com chave simtrica, aps isso, cifrar a chave simtrica com a assimtrica, para poder utilizar o conceito de chave pblica.

    Este trabalho focar somente na utilizao de algoritmos de chave simtrica.

    Algoritmos de Chave Assimtrica em destaque

    RSA ElGamal Diffie-Hellman

    2.2.3. Funo Hash

    Uma funo hash um algoritmo que cria e retorna um contedo de tamanho fixo, formado por letras e nmeros a partir de uma entrada com qualquer tamanho, que pode ser desde um nico caractere at de milhares de pginas, tambm pode ser qualquer tipo de arquivo.

    O contedo criado ou a sada recebe vrias denominaes tais como hash-code, messagedigest, hashvalue e resumo, dependendo da aplicao da funo hash. O processamento na funo que cria a sada conhecido como hashing, este deve ser computacionalmente vivel de ser calculado para que qualquer computador comum possa execut-la rapidamente.

    Qualquer alterao na origem, entrada, documento, mensagem, senha ou arquivo por menor que seja a alterao, at mesmo em um nico bit suficiente para que cdigo hash gerado seja totalmente diferente do original, garantindo que, a partir de um valor de hash no seja possvel retornar informao de origem.

    Considerando que o tamanho do contedo criado pela funo de hash fixo, sendo sempre do mesmo tamanho, e o contedo da informao de entrada ser praticamente infinito, existe a possibilidade de haver um mesmo hash para dois contedos diferentes de entrada. Essas entradas de contedos diferentes representados pelo mesmo hash so denominadas colises. Uma boa funo de hash aquela cujas colises no podem ser calculadas intencionalmente e que tenha uma possibilidade muito baixa de acontecer. No entanto, algoritmos tambm podem apresentar vulnerabilidades.

  • Figura 2Algoritmo de Hash

    Fonte: Autoria prpria, baseada28/11/2013.

    Nota: O mtodo de verificao feito pela comparao de dois senha armazenada na base de dados

    Funes One-Way

    Funes One-Wayrelativamente fcil calcularou seja, no reversiva.

    Um exemplo simples fragmentos, s que praticamente impossvel reconstruir o prato fielmente a partir dos fragmentos.

    Funes hash Onefunes de contrao, resumo de mensagem (checksum criptogrfico, check de integridade de mensagem (MIC) ou cdigo de deteco de manipulao (MDC).

    A maioria dos algoritmos

    2.2.3.1. Funes de Hash mais conhecidas

    MD4

    uma funo hashpela primeira vez em outubro de 1990. Foi especificada1992.

    O algoritmo usa como entrada uma mensagem de comprimento varivel e produz uma

    baseada na imagem:. Acessado em

    hashes. Compara-se o hash da login.

    (mo nica) so aquelas na qual dado um determinado valor x computacionalmente impossvel obter x a partir de y,

    fcil quebrar um prato em pequenos fragmentos, s que praticamente impossvel reconstruir o prato fielmente a partir dos fragmentos.

    mbm so conhecidas como funes de compresso, ), impresso digital (fingerprint)

    checksum criptogrfico, check de integridade de mensagem (MIC) ou cdigo de deteco de

    foi projetada por Ronald Rivest e publicada oficialmente no RFC 1186 e aprimorada no RFC1320 de

    O algoritmo usa como entrada uma mensagem de comprimento varivel e produz uma

  • 22

    "impresso digital" ou um "digesto de mensagem" de 128 bits. O algoritmo influenciou modelos posteriores, como o MD5, SHA-1 e RIPEMD. Foi projetado para ser bastante rpido em mquinas de 32 bits. Alm disso, no necessita

    de grandes tabelas de substituio e pode ser facilmente programado de forma compacta. O algoritmo de domnio pblico.

    usado para calcular o NTLM que um conjunto de protocolos de segurana da Microsoft que fornece autenticao, integridade e confidencialidade aos usurios do Microsoft Windows NT, XP, Vista e Seven.

    O MD4 foi criado para ser utilizado em assinaturas digitais no qual um texto longo precisa ser "comprimido" de forma segura antes de ser cifrado com uma chave privada secreta por uma criptografia de chave pblica. [MD4 92]

    MD5

    uma funo criada por Ronald Rivest em 1991, descrito na RFC 1321. uma verso melhorada e mais robusta do MD4, basicamente o MD4 com maiores recursos de segurana, os clculos so mais lentos, mas, em compensao, muito mais seguro. Este algoritmo produz um valor hash de 128 bits, com ele possvel gerar uma hash de 32 caracteres independente do formato, nome ou tamanho do arquivo.

    Por ser um algoritmo unidirecional, um hash MD5 no pode ser transformado novamente na senha ou qualquer outra informao que lhe deu origem.

    A vantagem desse tipo de algoritmo que cada hash gerada de um arquivo ser totalmente diferente do hash gerado de outro, mesmo se a diferena entre as duas fontes do hash for apenas um nmero.

    Foi projetado para mquinas de 32 bits, podendo ser facilmente programado de forma compacta. O autor colocou o algoritmo no domnio pblico em abril de 1992.

    A funo hash MD5 um padro mundial usado principalmente em sistemas de senhas, teve grande aceitao e foi o algoritmo de hash mais utilizado at alguns anos atrs.

    Algoritmos tambm podem apresentar vulnerabilidades. No caso do MD5, foram descobertos vrios tipos de ataques, tais como, Ataque de Coliso com Prefixo Escolhido, Ataque do Prefixo Idntico, Ataque por Fora Bruta, entre outros. [MD5 92]

    SHA1

    Os algoritmos SHA foram projetados pela National Security Agency (NSA) e publicados como um padro do governo Norte-Americano, descrito na RFC 3174.

    O SHA1 foi considerado o sucessor do algoritmo MD5 (tambm produz um hash baseado nos princpios do algoritmo MD5), mas ambos tm vulnerabilidades comprovadas. O SHA1 a funo mais usada da sua famlia (SHA) e foi publicado em 1995.

    Produz um valor de hash de 160 bits e tem o tamanho de 40 dgitos em base hexadecimal. amplamente utilizado e suporta os protocolos TLS e SSL, PGP, SSH, S/MIME eIPsec.

    [SHA1 01]

  • 23

    Blowfish

    O Blowfish foi desenvolvido por Bruce Schneier em 1993, Hash adaptativo s melhorias futuras de hardware o termo utilizado para identific-lo, pois pode permanecer resistente a ataques do tipo "fora-bruta" com o passar do tempo, pois conforme a tecnologia evolui o hash tambm pode ser otimizado. Ele implementa a varivel "custo" que proporcional quantidade de processamento necessrio para criptografar a senha, com isso gera um nvel de segurana maior em relao quase todos os outros mtodos criptogrficos. Configurando custos maiores de processamento, a senha pode passar por mais de 2 bilhes de ciclos para se chegar ao hash, isso para compensar a evoluo de hardware. Atualmente um padro altamente seguro no passa de 128 ciclos. [CRY 13]

    O PHP realiza o hashing com o Blowfish atravs da funo crypt() que est presente desde o PHP 4, e serve pra trabalhar com hashes de mo nica. Para funcionar ele deve receber dois parmetros: o salt (salto) e o cost (custo).

    O salto dever ser gerado de forma aleatria, para que cada vez que a senha for hasheada com um novo salto, ela sempre tenha um retorno diferente. Se a mesma senha for digitada 100 vezes, cada hash gerado ser diferente, diferentemente dos algoritmos MD5 e SHA1.

    O custo de processamento influencia diretamente nas tentativas de ataque de fora bruta, quanto maior, mais lento e quanto mais lento, melhor.

    O algoritmo Blowfish tambm foi incorporado em muitas outras linguagens importantes como C#, C++, Java, Perl, Python, etc. [BCRY 13]

    2.2.4. Funo Crypt

    uma funo de criptografia prpria do PHP, essa funo realiza o hashing de senhas acrescentando codificao especial para impedir que malfeitores utilizem ferramentas de busca de senha.

    Este processo enviar a senha criptografada com o algoritmo escolhido no banco de dados, o que ajudar a torn-la mais segura. Por exemplo, se algum malfeitor consiga interceptar a senha enviada ou descobre uma falha em algum servidor de banco de dados e obtm acesso as tabelas com as senhas e logins, caso a senha esteja criptografada com a funo Crypt, este malfeitor no conseguir descobrir quais dados so estes. [CRY 02]

    A funo Crypt uma funo genrica, diferentemente do MD5 e SHA1, pois, ela pode escolher qual algoritmo ser utilizado. As opes de algoritmos para a funo crypt so: DES Standard, DES Extended, MD5, Blowfish, SHA1 e SHA2.

    Abaixo o modo de como utilizar cada algoritmo:

    CRYPT_STD_DES Salto de 2 caracteres alfa-numricos. Ex. df

    CRYPT_EXT_DES Salto de 9 caracteres, que so: 1 underscore + 4 bytes (indicando o nmero de iteraes) + 4 bytes alfa-numricos. Ex. _k7..silm

  • 24

    CRYPT_MD5 Salto de 12 caracteres, iniciado em $1$ + 8 bytes (salto) + final $. Ex. $1$lkjhgfds$

    CRYPT_BLOWFISH Salto iniciado em $2a$ + 2 dgitos (custo) + smbolo $ + 22 caracteres alfa-numricos ou . ou / (salto) + final$

    CRYPT_SHA256 Salto de 16 caracteres, iniciado em $5$ + 12 bytes (salto) + final $

    CRYPT_SHA512 Salto de 20 caracteres, iniciado em $6$ + 16 bytes (salto) + final $

    O algoritmo utilizado vai depender do formato do Salto (seguindo o Formato de Criptografia Modular (MCF)), se o Blowfish ou o DES esto instalados e se a classe de configurao do formato crypt_set_format ( ) foi chamada para mudar o padro. [CRY 01]

    O primeiro fator a criptografar so os dados para usar o hash. O segundo o salto, em uma de trs formas:

    DES Extended Format: se ele comear com um sublinhado (_), o DES de formato estendido usado para interpretar ambos, a chave e o salto. A chave dividida em grupos de oito caracteres e os de ordem inferior 7 bits de cada caractere (56 bits por grupo) so utilizados para formar a chave DES. O primeiro grupo de 56 bits torna-se a chave inicial DES. O XOR de cifrao da chave DES com a prpria corrente e os bits de grupo tornam-se a seguinte chave DES para cada grupo a mais.

    O salto uma sequncia de nove caracteres que consiste em um sublinhado seguido por 4 bytes de contagem de iterao e 4 bytes do salto. Estes so codificados como caracteres imprimveis, 6 bits por caractere, com o caractere menos significativo em primeiro lugar. Os valores de 0 e 63 so codificados como 0-9, A-Z, a-z. Isso permite 24 bits, tanto para contagem quanto para o salto.

    O salto desorganizar o algoritmo DES em uma das 16777216 maneiras possveis se for configurado para 24 bits, ou 4096 maneiras se utilizar 12 bits, se o bit i do salto est definido, ento os bits i e i+24 so trocados na sada E-box DES.

    O valor retornado uma string de 20 ou 13 bytes de comprimento terminados em null, composta do salto seguido pela codificao da criptografia de 64 bits.

    Criptografia Modular: se o salto comea com a string $digito$, ento esse formato de criptografia usado. O dgito representa qual algoritmo ser utilizado na criptografia. Aps o cifro est o valor do salto para utilizar na codificao. O comprimento do salto est limitado a oito caracteres, pois o comprimento da sada retornado tambm limitado.

    Criptografia tradicional: O algoritmo utilizado vai depender se a funo crypt_set_format() foi chamada e se um formato padro mundial foi especificado. Quem definir esse padro de codificao a funo crypt_get_format(), que retorna uma string que representa o nome do algoritmo. Os valores vlidos so 'des', 'lf ', 'md5', 'sha256', 'sha512' e 'nth'. Se no constar em nenhuma das opes acima, ele assume o formato tradicional, que o formato DES, se ele no estiver disponvel, ser o formato MD5, usando toda a cadeia como o salto ou sua primeira parcela.

  • 25

    Exemplo de entrada:

    $senha = "senha123"

    DES Padro: crypt($senha, Ox)

    DES Estendido: crypt($senha, _5D2s/..s)

    MD5: crypt($senha, $1$l.vi.5/ks)

    Blowfish: crypt($senha, $2a$07$eisaqu/umaSenhArealbo.)

    SHA-256: crypt($senha, $5$rounds=5000$umcod1g.Show5S2Z)

    SHA-512: crypt($senha, $6$rounds=5000$umcod/g.Show5S2Z)

    Figura 3Funo Crypt Exemplo de entrada

    Fonte: Autoria prpria, baseada na imagem: . Acessado em 28/11/2013.

    Exemplo de sada:

    DES Padro: Ox3Y5Fya7XF5w

    DES Estendido: _5D2s/..sDW6cb.k2v6c

    MD5: $1$l.vi.5/k$jniCb3UJAftmHGjihtW291

    Blowfish: $2a$07$eisaqu/umaSenhArealbo.nz9zoBr8hWs4dQTPO8RNtL8WrB056fG

    SHA-256: $5$rounds=5000$umcod1g.Show5S2Z$zwYkD4VvpivMMkevXF9YIRTIYkrkrJ64g1bqbpG/Lu2

    SHA-512:$6$rounds=5000$umcod/g.Show5S2Z$vh9cbTzlAjbn7OQPMNUkMRpqrFW3bFG0k4h86FIm.FsRF5 hQOk9QYNHcv0Zzi59fpEEG2DJgGMcsKESpeOT3o/0a81023cfd1b9661c66724eb24b8a10a

    Figura 4Funo Crypt Exemplo de sada

    Fonte: Autoria prpria, baseada na imagem: . Acessado em 28/11/2013.

  • 26

    2.2.4.1 Utilizando o algoritmo Crypt (Blowfish)

    Para a utilizao do algoritmo Blowfish, deve-se configur-lo na funo crypt(). Como explicado na sesso anterior, o cdigo abaixo serve para criptografar a senha 1234, com o salto Cf1f11ePArKlBJomM0F6aJ e um custo de processamento de 8.

  • 27

    IMPORTANTE! A funo Blowfish sempre receber como parmetro 29 dgitos, o que ultrapassar disto ser ignorado. Ento, caso a senha codificada no banco for usada como parmetro da funo novamente, ela recupera apenas o prefixo, ignorando o restante do valor codificado (que seria a senha hasheada).

    Portanto, para checar se uma senha codificada no BD a mesma que uma informada pelo usurio, basta fazer:

    senha_digitada = 1234 senha_armazenada = $2a$08$Cf1f11ePArKlBJomM0F6a.EyvTNh6W2huyQi5UZst5qsHVyi3w5x.

  • 28

    2.3. TIPOS DE ATAQUES COMUNS

    Existem quatro tipos principais de ataques, estes so:

    Ataque de interrupo: caracteriza-se pela possibilidade de tornar um bem ou ativo indisponvel, inutilizvel.

    Ataque de interceptao: caracteriza-se pela obteno de informaes por meio do acesso no-autorizado de pessoa, sistema ou programa.

    Ataque de modificao: representa situaes em que dados so alterados por pessoas no-autorizadas.

    Ataque de fabricao: difere um pouco da modificao, por representar situaes em que dados falsos so produzidos e inseridos nos ativos de uma organizao.

    O tipo de ataque que este trabalho foca o de interceptao. Como o nome indica, um ataque com interceptao de terceiros ocorre quando um malfeitor est monitorando, capturando e controlando a comunicao entre dois equipamentos que estejam se comunicando, sem o conhecimento dos usurios. Por exemplo, esse malfeitor poderia capturar uma senha cifrada que trafega pela rede e tentar decifr-la para ter acesso a um sistema ou servio. [ATAQ 10]

    Abaixo esto alguns dos ataques mais comuns do tipo interceptao:

    Ataque de Prefixo Idntico - usando essa tcnica, possvel obter, a partir de dois arquivos iguais, dois conjuntos 128 bytes distintos que, adicionados (ou sobrepondo-os no final) aos arquivos iniciais, obtemos o mesmo hash para ambos. Note que, neste caso, no h controle sobre a alterao, ou seja, no fim das contas os arquivos apenas vo diferir nos 128 ltimos bytes. [CRIP 13]

    Ataque de Coliso com Prefixo Escolhido - consiste em pegar dois arquivos do mesmo tamanho, mas que podem ser completamente diferentes, e em seguida adicionar cerca de 1kb pr-calculado em cada um deles de forma que o hash final dos dois fique igual. Esta tcnica leva cerca de um dia para os clculos sarem com as duas sequncias de 1kb. [CRIP 13]

  • 29

    Rainbow Table uma tabela de consulta que utiliza um algoritmo de transao memria-tempo, dando a possibilidade de recuperar o valor original de uma senha atravs de uma senha criptografada com hash. O malfeitor gera uma tabela com o resultado da cifrao de todas as palavras de um dicionrio, combinando palavras e at adicionando smbolos e dgitos essas palavras. [HACK13]

    Ataque de Dicionrio o ataque com uso de dicionrio utiliza palavras, nomes, apelidos, datas de nascimento registradas em seu dicionrio armazenado em banco de dados. Com isso, podem-se obter senhas de sistemas utilizando tentativa e erro de senhas. [HACK13]

    Fora bruta (Brute force) - um ataque de fora bruta consiste em adivinhar, por tentativa e erro, um nome de usurio e senha e, assim, executar processos e acessar sites, computadores e servios em nome e com os mesmos privilgios deste usurio. [CSI 12]

    Se um malfeitor tiver posse destes dados, ele pode efetuar aes maliciosas em seu nome como, tais como, trocar a sua senha, invadir o seu computador e executar aes, como apagar arquivos, obter informaes confidenciais, etc. As tentativas de adivinhao costumam ser baseadas em:

    Dicionrios de diferentes idiomas e que podem ser facilmente obtidos na Internet;

    Listas de palavras comumente usadas, como personagens de filmes e nomes de times de futebol;

    Substituies bvias de caracteres, como trocar a por @ e o por 0;

    Sequncias numricas e de teclado, como 123456 e qwert;

    Informaes pessoais, de conhecimento prvio do malfeitor ou coletadas na internet em redes sociais e blogs, como nome, sobrenome, datas e nmeros de documentos.

  • 30

    2.4. FERRAMENTAS E TCNICAS PARA DECIFRAR SENHAS

    Existem diversas maneiras de decifrar uma senha criptografada, praticamente todas consistem em tentativa e erro. Qualquer computador, equipamento ou servio que seja acessvel rede, com um nome de usurio e senha, pode ser alvo de um ataque. H vrios mtodos que qualquer individuo que esteja mal intencionado pode recorrer com facilidade, ainda mais com o auxlio da internet. Existem centenas de scripts, programas, tutoriais e tantas outras ferramentas para a decifrao dos algoritmos MD5 e SHA1, essas ferramentas so simples em questo de interface, porm so muito potentes e dependendo do tipo de senha, pode ser que elas consigam decifr-la em questo de segundos. [HACK13]

    Abaixo uma pequena lista de programas para decifrar senhas:

    Hydra - consegue decifrar senhas dos protocolos: FTP, HTTP, IMAP, POP3, SMTP, entre outros.

    Brutus - Mesma funo do Hydra, tambm voltado para decifrao de senhas de protocolos web.

    Bruter - para decifrao de senhas de rede e web, parecido com o Brutus, porm consegue decifrar senhas de mais protocolos alm dos citados: MSSQL, MySQL, PgSQL, SMB-NR, SNMP, SSH2.

    Advanced zip password - voltado para decifrao de senha de arquivos do tipo word, rar, pdf, zip, etc.

    Advancedrarpassword - Idem ao Advanced zip password.

    Advancedpdfpassword - Especializado em decifrar senhas de arquivos pdf.

    OPHCRACK - decifrao de senha dos sistemas operacionais, especificamente Windows.

    H tambm na internet muitos sites contendo uma lista imensa de senhas e hashes SHA1 e MD5 para consulta. Para fazerem isso so executados scripts que geram combinaes de senhas, depois as convertem para o hash SHA1 ou MD5, e por fim salvam o par de senha e hash em seus bancos de dados. Ento, uma simples consulta SQL por um especfico hash pode trazer a senha originria deste. Estes sites no tm todas as combinaes existentes, porque seria impossvel armazenar todas as combinaes de hash e senha, pois o tamanho do banco seria imensurvel. Mas somados, estes sites possuem um nmero extraordinrio de senhas armazenadas. Somente o site md5decrypter.co.uk possui atualmente cerca de 44bi de senhas em sua base de dados.

  • 31

    2.5. BANCO DE DADOS

    Um banco de dados consiste em uma coleo de dados inter-relacionados que representam informaes sobre um domnio especfico. O objetivo principal de um sistema de banco de dados possibilitar um ambiente que seja adequado e eficiente para uso na recuperao e armazenamento de informaes. O gerenciamento dos dados envolve definir estruturas para o armazenamento das informaes e fornecer mecanismos para a manipulao destas informaes. Tambm precisa garantir a segurana destas informaes contra falhas de sistema e tentativas de acesso no autorizado.

    A utilizao de bancos de dados hoje em dia essencial para as organizaes, pois um meio muito eficiente de organizar e gerenciar seus ativos. A maioria das pessoas utiliza um banco de dados sem saber, fazem isso quando, quando usam um caixa eletrnico, criam uma conta ou postam fotos no Facebook, etc.

    A revoluo da internet na dcada de 90 aumentou consideravelmente o acesso direto de usurios a banco de dados. [SIL06]

    Dado - conjunto de smbolos organizados de forma que represente a informao fora da mente humana.

    Elemento de Dado - subconjunto de smbolos que compem um dado com significado especfico, mas no representa a informao completa.

    No exemplo:

    O n de pessoas cadastradas no projeto Construfcil em abril de 2014 de 9692239.

    Dado:

    Tabela 1 Tabela simples Fonte: Autoria prpria

    Elementos de dados: Projeto: Construfcil Perodo: abril/2104 Matriculados: 9692239

    Projeto Perodo Matriculados Construfacil 04/2014 9692239

  • 32

    2.5.1. Viso dos dados

    Um sistema de banco de dados tem a finalidade de fornecer uma viso abstrata dos dados aos usurios, ele oculta certos detalhes de como os dados so armazenados e mantidos. [SIL06]

    Exemplos de banco de dados:

    Lista Telefnica Acervo de uma biblioteca Registro de estoque

    Exemplo de viso de um registro de estoque:

    Ficha de controle de estoque Janeiro/2014

    Data Item Entrada Sada Saldo Quant. R$ Total Quant. R$ Total Quant. R$ Total 25/02/2014 Vaso 10 10,00 100,00 10 10,00 100,00

    Tabela 2 Viso dos dados Fonte: Autoria prpria

    2.5.2. Abstrao dos dados

    Como a maioria dos usurios no tem conhecimento em linguagem de banco de dados, os desenvolvedores ocultam a complexidade para os usurios sob vrios nveis de abstrao, para simplificar a iterao usurio-sistema. [SIL06]

    Estes nveis so:

    Fsico - (nvel mais baixo) descreve como os dados so realmente armazenados. Lgico - (nvel mdio) descreve que dados esto armazenados e que relao existe entre

    eles. View - (nvel mais alto) descreve apenas parte do banco de dados, apenas o que o usurio

    precisa visualizar. O sistema pode apresentar vrias vises de um mesmo banco de dados.

    Viso de quantidades de itens disponveis em estoque

    Item Quant. Vaso 10

  • Modelo de abstrao de dados:

    Figura 5Banco de dados Modelo de abstrao de dados

    Fonte: Autoria prpria, baseada na

    . Acessado em 28/11/2013.

    33

    Acessado em 28/11/2013.

    Acessado em 28/11/2013.

  • 2.5.3. Modelo de dados

    Um modelo de dados oferece uma maneira de descrever o projeto de um banco de dados nos nveis fsico, lgico e view. uma colerelaes de dados, semntica de dados e restries de con

    Caractersticas:

    Figura 7Simbologia - Banco de dados

    Fonte: Autoria prpria, baseada na imagem: Acessado em 28/11/2013.

    categorias de modelos de dados, estas so:

    Modelo de entidade/relacionamento (E-R) elo de dados baseado em objetos

    Modelo de dados semi-estruturado

    Modelo relacional usa uma coleo de tabelas para representar os dados e a relao entre eles. Cada tabela possui diversas colunas, e cada coluna possui um baseado em registros, tambm o mais usado. [SIL06]

    34

    Um modelo de dados oferece uma maneira de descrever o projeto de um banco de dados rramentas conceituais para descrever dados,

    SIL06]

    Acessado em 28/11/2013.

    Modelo relacional usa uma coleo de tabelas para representar os dados e a relao entre eles. Cada tabela possui diversas colunas, e cada coluna possui um nome nico. Este modelo

  • Figura 8Modelo relacional

    Fonte: Autoria prpria, baseada na imagem: . Acessado em 28/11

    Modelo de dados baseado em objetos

    Modelo de dados baseado em objetos pode ser concebido como uma extenso ao R com noes de encapsulamento, mtodos (funes) e identidade de objeto.

    35

    Acessado em 28/11/2013.

    Modelo de entidade/relacionamento baseado em uma percepo do mundo real que consiste em uma coleo de objetos bsicos, chamados entidades, e as relaes entre estes objetos.

    11/2013.

    pode ser concebido como uma extenso ao R com noes de encapsulamento, mtodos (funes) e identidade de objeto. [SIL06]

  • Figura 10Modelo de dados baseado em objetosFonte: Autoria prpria, baseada na imagem: < http://blog.locaweb.com.br/wp

    Nota: Neste trabalho o modelo utilizado ser o de dados baseados em objetos.

    2.5.3.4. Modelo de dados semi

    O Modelo de dados semidados individual do mesmo tipo possam ter diferentes tipos de atributos. Isto o oposto dos modelos mencionados anteriormente, em que precisam ter o mesmo conjunto de atributos.

    Figura 11Modelo de dados semi

    Fonte: Autoria prpria, baseada na imagem: . Acessado em 28/11/2013.

    dados baseado em objetos na imagem:

    < http://blog.locaweb.com.br/wp-content/uploads/2008/05/mvc.png>. Acessado em 28/11/2013.

    Nota: Neste trabalho o modelo utilizado ser o de dados baseados em objetos.

    Modelo de dados semi-estruturado

    Modelo de dados semi-estruturado permite a especificao dos dados em que itens de individual do mesmo tipo possam ter diferentes tipos de atributos. Isto o oposto dos

    modelos mencionados anteriormente, em que todos os itens de dados de um determinado tipo precisam ter o mesmo conjunto de atributos. [SIL06]

    Modelo de dados semi-estruturado

    na imagem: http://www.devmedia.com.br/images/articles/130099/f1.JPG >. Acessado em 28/11/2013.

    36

    content/uploads/2008/05/mvc.png>. Acessado em 28/11/2013.

    Nota: Neste trabalho o modelo utilizado ser o de dados baseados em objetos.

    permite a especificao dos dados em que itens de individual do mesmo tipo possam ter diferentes tipos de atributos. Isto o oposto dos

    todos os itens de dados de um determinado tipo

    http://www.devmedia.com.br/images/articles/130099/f1.JPG >. Acessado em 28/11/2013.

  • 37

    2.5.4. Sistema de Gerenciamento de Banco de Dados

    Um Sistema de Gerenciamento de Banco de Dados (SGBD) uma coleo de programas para acessar os dados do banco. So softwares que permitem a definio de estruturas para armazenamento de informaes e fornecimento de mecanismos para manipul-las. A maioria destes sistemas utiliza a linguagem Structured Query Language (SQL), que um padro internacional ANSI-SQL. O principal objetivo retirar da aplicao cliente a responsabilidade de gerenciar o acesso, manipulao e organizao dos dados. O SGBD disponibiliza uma interface para que os seus clientes possam incluir, alterar ou consultar dados. [SIL06]

    Principais Objetos de um SGBD

    Tabelas um objeto criado para armazenar os dados fisicamente, onde estes so armazenados em linhas e colunas, os dados descrevem um assunto tal como: clientes, fornecedores, etc.

    Vises como mencionado anteriormente o sistema fornece uma viso abstrata dos dados aos usurios.

    ndices uma ferramenta que facilita a busca de linhas dentro de uma tabela, pode ser uma referncia associada a uma chave primria para otimizar o processo de busca.

    2.5.5. Bancos de Dados Relacionais

    Bancos de Dados Relacionais usam tabelas para armazenar informaes. Os campos e registros padro so representados com colunas (campos) e linhas (registros) em uma tabela.

    Este tipo de banco de dados baseado no modelo relacional e usa um conjunto de tabelas para representar os dados e a relao entre eles. um conceito abstrato que define maneiras de armazenar, manipular e recuperar dados, construindo um banco de dados. Foi criado em 1970 pelo pesquisador da IBM, E. F. Codd, desde ento vem sendo um tipo de banco de dados padro. [SIL06]

    Cada tabela tem uma ou mais colunas, onde outras tabelas podero ter acesso s informaes desta tabela a partir de chaves estrangeiras.

    Exemplo:

    Tabela cadastro de usurios ID Nome Endereo Cidade UF

    1 Wagner Av. Dom Pedro I 1 1 2 Deluqui R. dos Professores 2 3 Tabela 3 Ligao entre tabelas 1 Fonte: Autoria prpria

  • 38

    Tabela cadastro de cidades ID Cidade UF

    1 Osasco 1 2 Cascavel 2 3 Santa F 3 Tabela 4 Ligao entre tabelas 2 Fonte: Autoria prpria

    Tabela cadastro de Estados ID UF

    1 SP 2 MG 3 PR Tabela 5 Ligao entre tabelas 3 Fonte: Autoria prpria

    2.5.6. Sistema de Gerenciamento de Bancos de Dados Relacionais

    Sistemas de Gerenciamento de Bancos de Dados Relacionais (SGBDR) tm a mesma funo dos SGBDs, porm, trabalham em cima de bancos de dados relacionais.

    Em bancos de dados relacionais a interface constituda pela Application Programming Interface (API) ou drivers do SGBDR. [SIL06]

    2.5.6.1. Principais caractersticas de um SGBDR

    Integridade - garante que os dados estaro sempre ntegros Disponibilidade - garante que os dados estejam sempre atuais e disponveis Confidencialidade - restrio de acesso aos dados para usurios no autorizados Autenticidade - somente usurios logados podero realizar operaes no banco de dados Irrevogabilidade - todas as alteraes feitas no banco tero registro do autor, hora, etc. Compartilhamento de dados entre mltiplos usurios Diferentes tipos de interface para os diferentes usurios Controle de redundncia dos dados Mecanismos de segurana, tal como backup e recuperao dos dados Flexibilidade na mudana das estruturas de dados

  • 39

    2.5.7. SGBDRs mais utilizados

    Microsoft SqlServer MySql Oracle

    2.5.8. Por que Escolher o MySQL?

    Com tantas possibilidades de produtos no mercado, existem hoje bancos de dados com os mais diversos tipos de estrutura, nveis de segurana, variao de preo, etc. Sendo assim, fica difcil escolher um banco de dados que trabalhe com alto desempenho, que exija baixo consumo de CPU e RAM, tenha suporte e o mais importante, que consiga assegurar que os dados estejam protegidos contra qualquer tipo de acesso malicioso. Atualmente existem muitos SGBDs bons, tais como, SQL, Oracle, porm, para se utilizar de todas suas funcionalidades e total desempenho paga-se um preo alto por suas licenas de uso. Estes tambm consomem muito processamento e RAM, exigindo um computador potente para execut-los. Existem suas verses gratuitas, porm, estas tm seus recursos limitados.

    H tambm outros SGBDs totalmente gratuitos, que no consomem muita memria nem CPU, como o Postgresql e o SQLite, porm s suportam aplicaes leves e simples.

    A soluo ideal que existe hoje no mercado o MySQL, que alm de ter licena GPL (que gratuita), no exige uma mquina to robusta e ainda consegue suportar aplicaes das mais complexas. Tem como vantagem sua portabilidade, podendo ser otimizado e customizado com outros recursos, suporta o modelo ORM, diversas linguagens de programao, drivers, StorageEngines, frameworks e at mesmo algoritmos de criptografia, e nestes dois ltimos quesitos que esse projeto ir aprofundar-se. [MYSQL 13]

    2.6. FRAMEWORK DE DESENVOLVIMENTO WEB

    Um framework de desenvolvimento web uma coleo abstrata de classes que capturam os padres de interao entre objetos, geralmente possui funcionalidades comuns de vrias aplicaes, serve como uma base de cdigo fonte genrico para a criao de web sites.

    Frameworks auxiliam no desenvolvimento e manuteno de aplicaes, pois, j vm com o ncleo pronto e uma estrutura pr-definida, ficando pendentes apenas ajustes bsicos, como, layout, regras de negcio, entre poucas outras configuraes. Transformando rapidamente seu projeto de aplicao web em cdigo funcional, pronto para produo.

    O melhor que pode ser flexvel e extensvel, podendo ser complementado com outros recursos e linguagens de programao, o que acaba se tornando um poderoso grupo de ferramentas trabalhando em conjunto. [WIN 12]

  • Alguns exemplos de compatibilidade: Java, C #, .NET, PHP, Yii.Com o uso de um frameworkAlgumas caractersticas co

    Reutilizvel, extensvel, eficiente e completo. Aplicaes semelhantes: sistemas de gesto, portais, fruns, CMS, e Modularizao: organizao de componentes relacionados Possuem uma coleo de bibliotecas Acesso a APIs (Interface de Programao de Aplicativos) de outros servios Servios de autenticao e autorizao

    2.6.1. ORM (Object-Relational

    O ORM (em portugus: Mapeamentogarantir que programao compatvel.

    As tabelas do banco de dadostabela como instncias destas classes.

    A persistncia dos dados se faz com o uso de uma io programador no precisa se preocupar com comandos de linguagem do banco utilizado para manipular os dados.

    A maior parte das aplicaestabelas de um banco de dad

    Bibliotecas de mapeamento de objetobanco de dados para classes de objetos de domnio.

    Normalmente o ORM de dados correspondem a propriedades em nossos objetos na memria.

    Figura 12Modelo ORM

    Fonte: Autoria prpria, baseada na imagem: < http://www.edzynda.com/media/orm.jpg>. Acessado em 28/11/201

    Alguns exemplos de compatibilidade: Java, C #, .NET, PHP, Yii.framework, no h razo para codificar sua aplicao

    Algumas caractersticas comuns entre frameworks:

    vel, extensvel, eficiente e completo. Aplicaes semelhantes: sistemas de gesto, portais, fruns, CMS, eModularizao: organizao de componentes relacionados

    oleo de bibliotecas (Interface de Programao de Aplicativos) de outros servios

    autenticao e autorizao

    Relational Mapping)

    O ORM (em portugus: Mapeamento Objecto-Relacional) um mtodo utilizado para garantir que programao orientada aos objetos utilizando bancos de dados relacionais seja

    banco de dados so representadas atravs de classestabela como instncias destas classes.

    A persistncia dos dados se faz com o uso de uma interface de acesso amigvel, com isso o programador no precisa se preocupar com comandos de linguagem do banco utilizado para

    maior parte das aplicaes web construda como armazenamentoum banco de dados relacional.

    Bibliotecas de mapeamento de objeto-relacional fornecem o mapeamento das tabelas do banco de dados para classes de objetos de domnio.

    ORM tem em seu cdigo a parametrizao de como os campos no banco de dados correspondem a propriedades em nossos objetos na memria. [WIN 12]

    na imagem: < http://www.edzynda.com/media/orm.jpg>. Acessado em 28/11/2013.

    40

    Alguns exemplos de compatibilidade: Java, C #, .NET, PHP, Yii. ua aplicao web desde o zero.

    Aplicaes semelhantes: sistemas de gesto, portais, fruns, CMS, e-commerce, etc.

    (Interface de Programao de Aplicativos) de outros servios

    um mtodo utilizado para bancos de dados relacionais seja

    so representadas atravs de classes e os registros de cada

    nterface de acesso amigvel, com isso o programador no precisa se preocupar com comandos de linguagem do banco utilizado para

    como armazenamento dos seus dados em

    mapeamento das tabelas do

    como os campos no banco [WIN 12]

  • 41

    2.6.2. Estrutura MVC (Model-View-Controller)

    O MVC (em portugus: Modelo-Viso-Controlador) um modelo de arquitetura de aplicao que faz a separao de funcionalidades em camadas, isso facilita a manipulao dos dados para a apresentao ao usurio.

    O Modelo trabalha com os dados da aplicao, regras de negcios, lgica e funes.

    A Viso a representao dos dados, como uma tabela ou imagens. possvel ter vrias vises do mesmo dado. Um exemplo: apresentao de dados numricos, tal como sua representao convertida em grfico.

    O Controlador faz intermediao entre o Modelo e a Viso. Ele recebe os dados de entrada direciona para o tratamento adequado e retorna a visualizao para o usurio se necessrio.

    A principal funo do MVC a reutilizao de cdigo e separao de conceitos. [WIN 12]

    Vantagens:

    Separao entre interface de usurio, regras de negcio e modelo de dados Reduzir custos de manuteno Fatorao de funcionalidades Comportamento padro

    Com isso obtemos versatilidade, pois, qualquer tipo de alteraes em uma das camadas no interfere nas demais, facilitando a atualizao de layouts, alterao nas regras de negcio e adio de novos recursos.

    2.6.3. Estrutura RBAC (Role Base Access Control)

    O RBAC (em portugus: Regras Baseadas em Controle de Acesso) constitui de regras para limitar o acesso da aplicao aos usurios autenticados baseado em suas funes.

    Assim, os usurios iro apenas executar determinadas operaes, pr-definidas pelo seu perfil, tais como manipulao de dados, criao de outros usurios, visualizao dos dados, entre outras.

    Essas restries so associadas com os papis desempenhados (funes). Para cada usurio atribu-se um papel e atravs dessa associao, o usurio adquire as

    permisses definidas para o papel. [WIN 12]

  • 42

    2.6.4. Atuais frameworks PHP no Mercado:

    CakePHP CodeIgniter Synfony Yii Zend

    2.6.5. Estrutura comum dos frameworks

    Figura 13Estrutura comum dos frameworks

    Fonte: Autoria prpria, baseada na imagem: < http://josmx.com/files/apache_php_mysql_logo.JPG>. Acessado em 28/11/2013.

    2.6.5.1. Servidor web Apache

    Todos os sites trabalham em cima de um servidor web, e este responsvel por disponibilizar as pginas e todos os demais recursos que possam ser acessados, tais como, postagem de fotos, envio de e-mail via formulrio, etc.

    Sua principal funo processar e executar solicitaes HTTP, HTTPS, SSL, FTP, etc. O Apache Server um software livre, no que diz respeito a ter seu cdigo-fonte disponvel

    para alteraes, alm de poder utiliz-lo gratuitamente. Com isso muitas comunidades de desenvolvedores o otimizam e fazem dele o servidor web mais utilizado. O servidor Apache capaz de executar cdigo em PHP, Perl, Shell Script e at em ASP. Sua utilizao mais conhecida a combinao do Apache com a linguagem PHP e o banco de dados MySQL.

    At o momento o Apache o servidor Web mais utilizado no mundo, tendo um domnio de mais de 60%. Isso porque prov alta performance, segurana, compatibilidade com diversas plataformas e inmeros recursos. [APA 13]

  • 43

    2.6.5.2. Linguagem web PHP5

    A PHP5 uma das mais importantes linguagens de programao de pginas e aplicaes web da atualidade, capaz de gerar contedo dinmico na internet baseada em bases de dados, ela tambm uma linguagem orientada a objetos (POO). compatvel com quase todos os sistemas operacionais, banco de dados, protocolos e outras linguagens de programao, tais como, C++, Pearl, Java, etc. licenciada gratuitamente sob a PHP License, uma licena diferente da GNU General Public License (GPL) devido a restries no uso do termo PHP. linguagem extremamente modularizada, o que a torna ideal para instalao e uso em servidores web, o cdigo interpretado no lado do servidor pelo mdulo PHP, que tambm gera a pgina web a ser visualizada no lado do cliente. [PHP 13]

    2.6.5.3. Banco de dados Relacional - MySQL

    O MySQL um dos mais populares sistemas de gerenciamento de banco de dados que utiliza a linguagem SQL. Esse SGBD compatvel com os principais sistemas operacionais e tambm de licena gratuita (GPL), porm se o programa que o acessar no for de licena GPL, dever ento ser adquirida uma licena para o uso do MySQL. Seu enorme sucesso devido seu desempenho e estabilidade, entretanto exige uma mquina com poucos recursos de hardware. Sua vasta compatibilidade de integrao a outros sistemas e suporte a vrias linguagens de programao, drivers e frameworks tambm contribui para sua reputao. Alguns de seus utilizadores de renome so: NASA, Wikipdia, Yahoo, entre tantos outros. [MYSQL 13]

    2.6.6. Por que Escolher o Framework Yii?

    O framework Yii se sobressai aos seus concorrentes na medida em que de fcil utilizao, eficiente, possui centenas de recursos e rigorosamente bem documentado. O Yii foi meticulosamente projetado para comportar gerenciar aplicaes web complexas, desde o comeo.

    a combinao da vasta experincia de seus criadores em desenvolvimento web e da investigao e reflexo dos frameworks PHP e aplicaes web mais populares atualmente.

    Alm de prover de recursos para a segurana da informao, possibilitando criptografar seus dados, principalmente senhas, com os melhores algoritmos da atualidade. [WIN 12]

    Algumas de suas caractersticas que vo alm do padro dos outros algoritmos:

    Funcionalidades genricas e customizveis Alto-desempenho Baseado em componentes Desenvolvimento em larga escala

  • 44

    Tratamento de erros: facilita associao de erros ao tratador correto Internacionalizao: traduo de mensagens, formatos de data, hora e nmeros Extensvel e compatvel com muitos outros recursos

    Uma das principais razes para se utilizar o Yii que ele Possui licena BSD, que uma licena livre e de cdigo aberto, considerado como de domnio pblico e pode ser modificado sem nenhuma restrio. A licena BSD permite que o software distribudo sob a licena, seja incorporado a produtos proprietrios. Trabalhos baseados no material podem at ser liberados com licena proprietria. Alguns exemplos notveis so: o uso de cdigo do BSD em produtos da Microsoft, como a pilha TCP/IP, e tambm o uso de muitos componentes do FreeBSD no sistema MacOS X da Apple Computer. [WIN 12]

    Outro fator importante para a escolha do framework Yii, que foram realizadas diversas pesquisas referentes quais os melhores frameworks do mercado atual e suas principais caractersticas. [FRAM 13]

    Uma dessas pesquisas foi a realizada no site http://socialcompare.com/en, que compara e mostra as principais funes de cada framework, onde foram selecionados os cinco melhores frameworks atuais do mercado. Estes so: CakePHP, CodeIgniter, Symfony, Yii e Zend.

    Figura 14Comparao entre frameworks Socialcompare

    Fonte: . Acessado em 03/12/2013.

  • 45

    Outros sites de comparao e pesquisas dos frameworks: http://www.phpframeworks.com/ http://www.phpwact.org/php/mvc_frameworks http://www.sheldmandu.com/php/php-mvcframeworks/choosing-the-best-php-mvc-framework-part-1

    A pesquisa principal foi a Navigating the Framework Jungle for Teaching Web Application Development, de volume 10 do ano2013. Disponibilizada no endereo: http://iisit.org/Vol10/IISITv10p095-109Chao0092.pdf

    Realizada por renomados pesquisadores do ramo de Tecnologia da Informao, os professores Joseph T. Chao, Kevin R. Parker e Bill Davey. Com o objetivo de orientar qual o melhor framework para se criar e gerenciar aplicaes web. [FRAM 13]

    Foram selecionados os 5melhores frameworks atuais, abaixo a lista destes:

    CakePHP CodeIgniter Symfony Yii Zend

    Nesta pesquisa foram realizados diversos testes, em diversas reas de atuao dos frameworks, desde popularidade, at suas principais funes e caractersticas. Onde para cada teste realizado, eram gerados pontos para cada framework de acordo com seu desempenho. Ao final dos testes foram somados os pontos de todos os testes, indicando qual o melhor framework.

    Tabela 6 Comparao entre frameworks Fonte: http://iisit.org/Vol10/IISITv10p095-109Chao0092.pdf

    Como se pode ver nos resultados finais na tabela acima, o Yii conseguiu superar todos os outros frameworks em pontuao nos critrios estabelecidos.

    Apesar de ser novo, o Yii vem ganhando notoriedade no mercado, devido a sua simplicidade, eficincia, robustez, entre outros aspectos que o tornam um dos melhores frameworks para se trabalhar. [FRAM 13]

  • 46

    2.6.7. Histria do Yii

    Figura15Yii Framework

    Fonte: Yii Framework. Logo. Acessado em: 13/09/2013.

    O framework Yii comeou seu desenvolvimento em 1 de janeiro de 2008 e Qiang Xue o nome do seu fundador. Anos antes, Qiang j havia desenvolvido e mantido por um longo tempo outro projeto de framework denominado PRADO. O tempo de experincia prpria e feedbacks de usurios em relao ao projeto PRADO indicaram a necessidade da criao de um framework baseado em PHP5 que fosse de manipulao mais fcil, mais extensvel e mais eficiente.

    A verso alpha do Yii foi oficialmente lanada para atender a essas necessidades, em outubro de 2008.

    Em 3 de dezembro de 2008 o Yii 1.0 foi lanado oficialmente. A partir de ento o Yii vm evoluindo e tem sua ltima verso 1.1.14 disponibilizada para download, lanada em 11/08/2013.

    O Yii conta com uma equipe de desenvolvedores renomados no ramo de ambiente web e tambm possui crescentes comunidades de desenvolvedores PHP ao redor do mundo e continua a ganhar notoriedade e popularidade.

    Logo ficou visado pelo impressionante alto desempenho quando comparado a outros frameworks baseados em PHP5.

    Como a evoluo no para, a verso 2 do Yii est sendo desenvolvida e est sendo construda completamente para o PHP 5.3.0+ e tem por objetivo se tornar o estado da arte da nova gerao de frameworks PHP. [WIN 12]

    2.6.8. Caractersticas do Yii

    O Yii um framework em PHP de alto desempenho que trabalha com componentes para o desenvolvimento de grandes aplicaes web. Sua mxima reutilizao de cdigo na programao web pode alavancar rapidamente o processo de desenvolvimento. Ele pode desenvolver praticamente todos os tipos de aplicaes desde e-Commerce at portais com alto trfego, devido a sua generalidade, ser leve e pode ser combinado com sofisticadas solues em caching.

    Seu nome um acrnimo para YES (Sim), e pronunciado como Yee que representa os adjetivos para descrev-lo, como Easy, Eficient and Extensible (fcil, eficiente e extensvel). [WIN 12]

  • 47

    Figura 16Base do Yii

    Fonte: Yii Framework. Logo. Acessado em: 13/09/2013.

    Fcil: Para criar uma aplicao web preciso apenas ter uma mquina com os servios bsicos

    de hospedagem, estes so: servidor web apache, PHP 5.1.0 ou superior e um banco de dados relacional. Aps isso s copiar os arquivos do framework Yii no diretrio web raiz e pronto.

    Com algum conhecimento em PHP e orientao a objetos o usurio est pronto para comear a desenvolver aplicaes, no preciso aprender linguagem de modelagem.

    O Yii j vem com classes de componentes que so estendidas a partir do ncleo. Seguindo suas convenes prescritas, o usurio pode escrever menos cdigo e gastar menos tempo desenvolvendo sua aplicao. Mas tambm ele permite que o usurio personalize todos os seus padres e tambm d instrues de como fazer isso.

    Como o Yii o resultado de uma avaliao e reciclagem de outros frameworks bem conhecidos, provvel que o usurio o ache bem familiar e fcil de manusear.

    Eficiente: Para agilizar a criao e manuteno de suas aplicaes, ele tem como principio o modelo

    de desenvolvimento DRY (Dont Repeat Yourself). Estas aplicaes so construdas usando a arquitetura MVC. Isso reduz a duplicao e promove a reutilizao de cdigo.

    tambm extremamente rpido e pode ser configurado com otimizao de desempenho, alis, este foi um dos principais quesitos desde o incio de sua formulao.

    um framework de alto desempenho, baseado em componentes que podem ser usados para o desenvolvimento de aplicaes web em qualquer escala. Se o usurio utilizar as convenes internas do Yii, ele ter o aplicativo instalado e funcionando com pouca ou nenhuma configurao manual.

    Extensvel: O Yii j vem com recursos para atender a todas as demandas oriundas das aplicaes web

    de hoje. Widgets habilitados para AJAX, integrao de servios web, RESTful e SOAP, reforado com uma arquitetura MVC, DAO e camada de banco de dados relacional ActiveRecord, caching sofisticado, hierarquia de controle de acesso baseado em funo e muito mais.

    O Yii foi meticulosamente projetado para permitir que quase todos os blocos do seu

  • 48

    cdigo sejam estendidos e personalizados para atender a qualquer exigncia de projeto. No tem como no aproveitar este benefcio, que a extensibilidade do Yii, o usurio

    estende ou otimiza as classes j prontas. O Yii auxilia no processo de otimizao de classes para criao de funes especficas, isto tambm ajuda a contribuir para a crescente lista de recursos do Yii e participar ativamente da comunidade para a extenso do Yii.

    No site do Yii pode ser encontrada uma lista de extenses disponveis, contribudas por usurios. H tambm um repositrio de extenses no-oficiais, feito para grandes aplicaes, o que realmente demonstra a extensibilidade e a fora da comunidade deste projeto.

    Normalmente na metodologia RBAC, um usurio atribudo a uma ou mais funes e este usurio herda as permisses referentes essas funes. No Yii, alm dessa opo, podemos associar usurios a qualquer item de autorizao, isso garante uma enorme flexibilidade ao trabalhar com hierarquia de papis.

    Alm do mais, o Yii tem uma ferramenta de gerao automtica de cdigo, o Gii, com ele podemos implementar qualquer atribuio MVC para que nossa aplicao possa interagir com o banco de dados, onde, apenas informamos as tabelas do banco que recebero o mapeamento para atribuio da funo, a partir da ele gera o cdigo para a criao das classes automaticamente.

    2.6.9. Como o Yii Funciona?

    O Yii utiliza as padronizaes como ORM, MVC, RBAC, entre outras, isso nos d um extremo poder para criar e manter nossas aplicaes com mximo reaproveitamento de cdigo. [WIN 12]

    Para facilitar sua organizao e configurao, a estrutura padro de suas funcionalidades fica armazenada nos diretrios relacionados abaixo:

    _ assets: recursos publicados _ css: recursos de layout _ images: arquivos de imagens _ themes: temas para extenso _ protected: arquivos protegidos da aplicao _ components: componentes adicionais _ config: configurao da aplicao _ controllers: regras de negcio _ data: sql de criao/configurao do banco de dados _ extensions: extenses para o framework _ messages: traduo de mensagens para UI _ models: modelo de dados _ runtime: arquivos temporrios _ tests: scripts de teste da aplicao _ views: interface grfica da aplicao

  • 49

    2.6.9.1. ORM no Yii

    O Yii fornece uma camada ORM na forma do padro Active Record (AR). O AR (em portugus: Registro Ativo) um esquema padro usado para acessar o banco de

    dados abstrato usando orientao a objetos. Ele mapeia as tabelas em classes, linhas em objetos e colunas em propriedades de classe.

    Ele tambm abriga a lgica de negcios necessria para ser aplicada a esses dados. O resultado disto uma classe que definir tudo o que ser escrito e lido em nosso banco

    de dados. Cada instncia de uma classe AR representa uma nica linha em uma tabela do banco de

    dados. O AR gera as instrues em SQL necessrias para criar, ler, atualizar e excluir dados. Ele

    tambm permite ao desenvolvedor acessar os dados armazenados no banco de dados de forma orientada a objetos. Com isso no precisamos escrever qualquer cdigo em SQL ou outra forma de lidar com o banco de dados.

    Um exemplo seria usar a AR para operar em um site que contm postagens, cujo ID interno 15 tambm usado como chave primria da tabela. Primeiramente ele recupera a postagem usando a chave primria. Logo depois ele muda o ttulo e as atualizaes do banco de dados para salvar as alteraes:

    $post=Post::model()->findByPk(15); $post->title='Postagem_15'; $post->save();

    O AR no Yii tambm se integra perfeitamente com muitos outros aspectos da estrutura do Yii. H muitos campos de formulrio auxiliares de entrada que ligam diretamente para seus respectivos atributos de classe. Desta maneira, o AR extrai os valores dos campos do formulrio de entrada diretamente para o Model (MVC). Ele tambm suporta validao automtica de dados, e se a validao falhar a classe View do Yii facilmente exibir os erros de validao para o usurio. [WIN 12]

    2.6.9.2. MVC no Yii

    Como citado antes, o Yii um framework que suporta o padro MVC e fornece uma clara estrutura de diretrio para cada Model, View e Controller. [WIN 12]

    Model: um Model no Yii representa a informao e regras de negcio, responsvel pela manuteno do estado, e deve encapsular estas regras que se aplicam aos dados que definem este estado. Pode ser qualquer instncia da classe CModel ou de suas classes subjacentes.

    Os dados que compem os atributos na classe de Model podem ser obtidos a partir de uma

  • 50

    linha de uma tabela de banco de dados ou dos campos de um formulrio de entrada do usurio. A classe de Model normalmente composta de atributos de dados que podem ser

    validados com um conjunto de regras definidas. Dois tipos de Modelos so utilizados pelo Yii, o modelo de formulrio (classe

    CFormModel) e o Registro Ativo (classe CActiveRecord). Ambos se estendem desde a classe base CModel.

    A classe CFormModel representa um modelo de dados que coleta entradas de formulrio HTML. Ela engloba toda a lgica para a validao do campo de formulrio. E ento armazena esses dados na memria ou, com a ajuda de um modelo de Registro Ativo, que armazena os dados em um banco de dados.

    A classe CActiveRecord envolve todo o esquema do AR, propriamente dito anteriormente.

    View: uma View no Yii contm os elementos da User Interface (UI), como texto, cones e campos de formulrio. Construdo em HTML e pode conter declaraes em cdigo PHP. responsvel por fazer esse processamento, na maioria das vezes, com base nos dados do Model.

    As declaraes PHP dentro do View na maioria das vezes so dos tipos:

    Condicional

    Mtodos auxiliares de classe HTML

    Declaraes de repetio

    Referem-se a outros elementos da UI

    Widgets

    Controller: no Yii o Controller uma instncia de CController ou uma de suas classes subjacentes, ele gerencia comunicao entre Model e o View e cuida da validao e da filtragem de dados.

    O Controller o responsvel pelo tratamento de uma solicitao encaminhada pelo usurio, interagindo com o Model, e instruindo o View a fim de atualizar e exibir os dados adequadamente.

    Juntamente com o esquema MVC, o Yii tambm trabalha com outro mtodo para a execuo dos processos requisitados pelo usurio, chamado aplicao (application). A aplicao recebe a solicitao e a envia para um controlador adequado para ser processada.

    Quando nos referimos ao Controller no Yii, h muito mais processos envolvidos do que apenas chamar o Model e renderizar as Views. As classes do Controller podem gerenciar servios para fornecer pr e ps-processamento sofisticado sobre os pedidos, implementar regras bsicas de controle de acesso para limitar o acesso a certas aes, gerenciar o layout de todo o aplicativo e repassar a renderizao dos arquivos, gerenciar a paginao de dados e muitas outras funes. [WIN 12]

  • Como mostrado na figura abaixo:

    Figura 17Estrutura MVC

    Fonte: Autoria prpria, baseada na imagem: . Acessado

    em geralmente o seguinte

    recebido pelo roteador O roteador analisa o pedido e decide em qual lugar da aplicao deve ser encaminhado, Muitas vezes o roteador identifica um mtodo de ao especfico dentro de uma classe do

    O Controller processa o pedido e provavelmente interage com o Model para realizar outra

    este prepara os dados e os encaminha para o View. devolve ao navegador para

    banco de dados. (DAO) do Yii so construdos em cima da extenso PHP Data

    Esta uma camada de abstrao de utilizada para fazer a conexo entre os objetos da camada Model e a persistncia

    destes no banco, separando as regras de negcios (MVC) das regras de acesso a banco de dados. Porm, o DAO pode ser usado fora do modelo MVC, embora no seja recomendado.

  • 52

    Todos os SGBDRs so encobertos por trs de uma nica interface. Desta maneira, a base de dados pode permanecer independente e as aplicaes desenvolvidas usando DAO tambm podem ser facilmente trocadas para usar outros SGBDRs. [WIN 12]

    2.6.10.2. PDO

    PDO: (em portugus: Objeto de dados PHP) uma classe exclusiva da linguagem PHP. Cria uma camada de abstrao dos drivers que fazem a conexo entre a aplicao em PHP e a sua persistncia em um banco de dados relacional. Isso permite que, com poucas configuraes o usurio transfira toda a sua aplicao para um novo SGBDR. [WIN 12]

    2.6.10.3. Diferena entre DAO e PDO

    DAO um objeto de acesso direto aos dados e PDO um objeto de dados. Com esse esquema a classe DAO utiliza o PDO para entregar os dados do objeto em questo. [WIN 12]

  • 53

    3 METODOLOGIA

    Atravs de pesquisas bibliogrficas foram colhidas informaes referentes ao nvel de segurana dos algoritmos hash MD5, SHA1 e Blowfish. Com isso foi realizado um levantamento dos riscos e vulnerabilidades contidos nestes algoritmos. A pesquisa principal realizada foi a exploratria com anlise qualitativa. Logo em seguida, foi realizada a pesquisa experimental, onde foram feitos alguns testes para constatar se existiam vulnerabilidades nos algoritmos acima citados, dando assim mais nfase pesquisa anterior. A estratgia utilizada foi a pesquisa metodolgica aplicada ao objeto, como a anlise documental e observao direta. Tambm foram realiz