Prévia do material em texto
PROGRAMAÇÃO BACK-END E-book 3 Ariel da Silva Dias Neste E-Book: INTRODUÇÃO ���������������������������������������������� 3 SISTEMAS CMS E FRAMEWORKS ���������4 Segurança de dados ������������������������������������������������4 Criptografia ���������������������������������������������������������������8 HTTPS �������������������������������������������������������������������� 12 CONTENT MANAGEMENT SYSTEMS ���16 WordPress ������������������������������������������������������������� 17 Joomla ������������������������������������������������������������������� 20 WordPress ou Joomla? ���������������������������������������� 21 FRAMEWORKS MODEL-VIEW- CONTROLLER ��������������������������������������������� 23 Backbone�JS ��������������������������������������������������������� 25 Angular�js ��������������������������������������������������������������� 25 Laravel ������������������������������������������������������������������� 26 FRAMEWORKS WEB DO LADO SERVIDOR ���������������������������������������������������28 NodeJS ������������������������������������������������������������������ 29 Asp�NET ����������������������������������������������������������������� 30 Spring ��������������������������������������������������������������������� 32 Django �������������������������������������������������������������������� 33 CONSIDERAÇÕES FINAIS ���������������������� 35 SÍNTESE �������������������������������������������������������36 2 INTRODUÇÃO Estudaremos os principais conceitos de segurança de dados, na sequência, os principais frameworks de desenvolvimento MVC front-end e back-end� Iniciaremos os estudos com os principais conceitos de segurança, tratando de assuntos como criptogra- fia simétrica e assimétrica, sem deixar de abordar o protocolo HTTPS, um modo mais seguro de nave- garmos pela internet� Em seguida, conheceremos o WordPress e o Joomla, dois dos principais CMS utilizados no desenvolvi- mento web, bem como a agilidade no processo de desenvolvimento que eles proporcionam� Nesse sen- tido, não deixaremos de estudar o conceito de MVC e os frameworks utilizados para o desenvolvimento nesse tipo de arquitetura� Encerraremos conceituando e discutindo sobre os quatro frameworks de desenvolvimento do lado do servidor: NodeJS, ASP�NET, Spring e o Django� Bons estudos!!! 3 SISTEMAS CMS E FRAMEWORKS Segurança de dados O objetivo deste tópico é levantar questões sobre a segurança dos dados. Mais especificamente, tra- taremos do controle de acesso, por ser este um as- sunto presente em nosso cotidiano. Por exemplo, quando você vai entrar em sua casa, necessita de um controle para abrir o portão ou de uma chave para abrir a fechadura. Assim é com a Tecnologia da Informação (TI): quando você precisa verificar seus e-mails (dados+informação) ou seu saldo bancário (dados+informação), deve entrar com login e senha, biometria, tokens (geram sequência de números que valem por alguns segundos), comando de voz etc� O objetivo do controle de acesso é garantir que so- mente pessoas autorizadas tenham acesso aos dados� Tal tipo de medida visa a colocar agentes ameaçadores longe dos ativos de uma organização (KIM; SOLOMON, 2014)� Nesse sentido, muitas vezes acabamos por confundir três conceitos diferentes: autenticação, autorização e controle de acesso. No geral, essa diferença não é entendida adequadamente e, às vezes, eles são con- siderados a mesma coisa ou os termos são usados de modo intercambiável, o que não é correto. Essa 4 confusão é compreensível, uma vez que os três pro- cessos aparentam ocorrer ao mesmo tempo� No entanto, ao projetar a estrutura de segurança de uma aplicação web, é vital que se compreenda a dis- tinção entre autenticação, autorização e controle de acesso. Vamos. então, compreender a definição desses conceitos distintos e de que modo podem ser aplicados a um sistema web� Autenticação A autenticação é o processo de verificação de al- guém que é quem afirma ser. No geral, solicita-se ao usuário um nome de usuário (login) e uma senha, mas pode incluir qualquer outro método de demons- tração de identidade, por exemplo, um cartão inteli- gente, um número PIN ou biometria� Note que, para executar a autenticação, o usuário já deve ter seus dados cadastrados em uma base de dados, de modo que o mecanismo de autenticação possa entrar em ação� Salientamos que nem sempre a autenticação é con- cedida a uma pessoa real. Por exemplo, em nosso sistema web, temos uma funcionalidade: o clima ago- ra� Para obter os dados desse clima, nosso sistema acessa uma Application Program Interface (API), a qual é paga e exige autenticação para ser consumida. O usuário final, quando acessa o site, visualiza a in- formação do clima, e isso é transparente para ele. Porém, “por trás” da aplicação, o sistema web tenta 5 usar a API e precisa realizar a autenticação antes de ter acesso aos dados do clima� Autorização Conseguimos nos autenticar no sistema web, porém, o fato de a autenticação ter sido bem-sucedida não garante a autorização aos recursos e dados� Como assim? Explico: a autorização é o processo de esta- belecer se o usuário (que já está autenticado) tem permissão de acesso a um recurso do sistema ou aos dados� A determinação do nível de autorização a ser for- necida a um usuário se realiza nas configurações de sua conta, a qual foi criada no momento de seu cadastro no sistema. Por exemplo, os dados asso- ciados a um usuário podem indicar se são membros de um determinado grupo, como “Administradores” ou “Clientes”, ou podem indicar se pagaram uma assinatura para algum conteúdo de acesso restrito (assinatura de jornais, ensino online etc�) ou podem indicar se ainda estão dentro do período de 90 dias de um teste gratuito� Controle de acesso O controle de acesso é uma combinação de auten- ticação e autorização, impondo uma restrição ao usuário, ou seja, se ele tem ou não acesso a algum dado ou recurso� O controle de acesso deve ser feito em dois níveis: físico e lógico, visando a fornecer uma validação 6 adicional para acessar recursos específicos. Por exemplo, você chega à empresa para trabalhar e, na entrada, você precisa apresentar sua credencial, a qual libera uma catraca� No momento em que você aproxima o crachá da catraca, está sendo realizada a autenticação (verificação). Mesmo que a autenticação seja bem-sucedida, isso não garante que você tenha acesso a um determi- nado departamento da empresa; logo, você pode ser barrado por falta de autorização (ou permissão)� Você pode pensar: “Mas onde foi definido se tenho ou não autorização de entrar em um departamento?”. Essa definição é realizada por meio do controle de acesso, o qual garante que você tenha ou não acesso ao ambiente� Esse exemplo é válido para o ambiente digital; com isso, garante-se a proteção dos dados por meio do controle de acesso� Por essa razão, mencionou-se que o controle de acesso deve ser feito em nível fí- sico e lógico� De nada adianta bloquear os acessos físicos, por exemplo, impedir que um funcionário do almoxarifado entre no Departamento Financeiro, mas esse mesmo funcionário, pelo sistema, consegue acessar os dados do financeiro e realizar consultas, inclusões e exclusões. Podcast 1 7 https://famonline.instructure.com/files/954638/download?download_frd=1 Criptografia Além dos conceitos apresentados, devemos levar em consideração o conceito de criptografia de dados quando o assunto é segurança. A criptografia é a arte de criar informações codifica- das, que somente pessoas específicas podem deco- dificá-las, de modo que, se uma terceira pessoa tiver acesso aos dados, não será capaz de entender caso não tenha a chave que descriptografa a informação� Apesar de ser um conceito muito utilizado, a cripto- grafia é uma tecnologia bem antiga, com mais de 4 mil anos� Ela esteve presente nas principais guerras da humanidade e, por meio dela, houve o princípio da computação moderna(BERNARDO, 2015)� Quando se trata de segurança da informação, a crip- tografia pode satisfazer tais requisitos (BARRETO; ZANIN; MORAIS; VETTORAZZO, 2018): ● Confidencialidade: A confidencialidade pode ser alcançada de várias maneiras, mas as duas mais comuns são esteganografia e criptografia. Esteganografia é o processo de colocar uma men- sagem dentro de outra mensagem de tal maneira que os observadores não sabem que ela está lá� A esteganografia oculta uma determinada informação, porém, apesar de possuir algumas funcionalidades interessantes, ela não é utilizada em um sistema corporativo. Por sua vez, a criptografia tem o objetivo de proteger o dado ou a informação, não o ocultando, mas dificultando o seu entendimento por meio de 8 algoritmos complexos e por conceitos como cripto- grafia simétrica e assimétrica. Com isso, garante-se a confidencialidade da informação. ● Integridade: A integridade é um requisito funda- mental de uma infraestrutura de identidade confiável. Os sistemas de identidade trocam credenciais, bem como mensagens e transações relacionadas aos atributos, informações de provisionamento e outros dados. É importante confiar que o conteúdo não foi violado. Por exemplo, considere um documento representando credenciais de identidade� Para con- fiar nessas credenciais, devemos verificar se são autênticas e não foram alteradas� ● Autenticação: A autenticação é como uma identi- dade que se estabelece. Trata-se de um pré-requisito para controlar o acesso de um sujeito a recursos crí- ticos. A autenticação responde às perguntas “Quem é você?” e “Como sei que posso confiar em você?” ● Não repúdio: O não repúdio é a apresentação de evidências de que uma mensagem foi enviada ou recebida. Se mensagens ou transações puderem ser contestadas, ações importantes de identidade poderão ser contestadas e comprometidas� Essas disputas podem assumir duas formas� Considere duas pessoas, Alice e Bob, que estão trocando men- sagens� Em um caso, Alice nega ter enviado uma mensagem a Bob, quem afirma ter recebido. Ser capaz de combater a negação de Alice é chamado de Não Repúdio da Origem (NRO)� No segundo caso, Alice alega ter enviado a Bob uma mensagem que ele 9 nega ter recebido� Oferecer evidências para contrariar a reivindicação de Bob é chamado de Não Repúdio de Recebimento (NRR)� Tipos de Criptografia A criptografia é uma técnica antiga. Uma das primei- ras que se conhece é a Cifra de César, a qual realizava a troca de um caractere por outro, mediante uma “chave de troca”, que representa o número de carac- teres à esquerda ou à direita que se deve percorrer� Observe este exemplo: na mensagem “Bom dia”, uma cifragem com chave 3 vai deslocar para a direita no alfabeto 3 letras, ficando assim: “Erp gld”. Se, no meio da transmissão dessa informação alguém a intercep- tar, não compreenderá� Contudo, o receptor que tiver a chave poderá decodificá-la. A chave, neste caso, seria: “3 letras para a direita”. Apesar de ser uma cifragem simples, foi muito útil por vários anos� Com o passar dos tempos, vários tipos de cifras surgiram. Porém, as pessoas ficaram muito melhores em quebrar esses códigos, tornando- -se importante criar códigos mais difíceis de tempos em tempos� Atualmente, temos tipos sofisticados de criptografia que formam a espinha dorsal do que nos mantém seguros na internet e, entre os tipos, citamos a crip- tografia de chave simétrica e chave assimétrica: ● Criptografia de chave simétrica: envolve uma única chave para criptografar e descriptografar os dados� 10 A criptografia de chave simétrica é ótima para usar quando apenas uma pessoa precisa criptografar e descriptografar dados, ou mesmo quando várias partes têm a oportunidade de compartilhar a chave com antecedência� Embora seja útil em várias si- tuações, há outras em que pode ser problemático. Considere, por exemplo, que você precisa enviar uma mensagem criptografada para uma pessoa que não tem a chave para descriptografar� Como proceder? Torna-se uma dor de cabeça� Pensando nisso, foi criada a criptografia assimétrica. ● Criptografia de chave assimétrica: também conhe- cida como criptografia de chave pública, requer uma chave para criptografar dados e outra para descrip- tografar. Esse tipo de criptografia permite a troca de informação, com segurança, com alguém com quem você nunca teve a oportunidade de trocar suas chaves� Cada usuário gera um par de chaves, feito de uma chave pública e privada. A chave pública é compartilhada abertamente, ao passo que a chave privada é mantida em segredo como uma senha. Devido a um complexo relacionamento matemáti- co entre as duas chaves, depois que os dados são criptografados com uma chave pública, eles só po- dem ser descriptografados por sua chave privada correspondente� 11 SAIBA MAIS Saiba mais sobre os conceitos relaciona- dos à criptografia simétrica e assimétrica acessando https://cryptoid.com.br/banco-de- -noticias/29196criptografia-simetrica-e-assimetri- ca/� HTTPS No início dos anos 1990, Tim Berners-Lee criou o padrão HTTP como parte de seu trabalho na defi- nição da World Wide Web. O HTTP é um protocolo cliente-servidor de resposta a pedidos assimétrico (Figura 1). Assim, um cliente HTTP envia uma mensagem de solicitação para um servidor HTTP� O servidor, por sua vez, retorna a mensagem de resposta� Em ou- tras palavras, o HTTP é um protocolo pull, ou seja, o cliente extrai informações do servidor (em vez de o servidor enviar as informações para o cliente). Resposta HTTP Requisição HTTP Servidor HTTP (Servidor Web) Cliente HTTP (Navegador) Figura 1: Protocolo HTTP. Fonte: Autoria própria. 12 https://cryptoid.com.br/banco-de-noticias/29196criptografia-simetrica-e-assimetrica/ https://cryptoid.com.br/banco-de-noticias/29196criptografia-simetrica-e-assimetrica/ https://cryptoid.com.br/banco-de-noticias/29196criptografia-simetrica-e-assimetrica/ Todo aluno que começa a estudar os protocolos de comunicação faz a seguinte pergunta: Por que temos o HTTPS se o HTTP já nos parece suficiente? Por esse viés, vamos concordar: o que está sendo transferido de um ponto a outro, entre cliente e servi- dor, é texto. Para entender por que utilizar o protocolo HTTPS, primeiro devemos saber como os roteadores Wi-Fi funcionam. Digamos que você esteja conec- tado ao Wi-Fi de um shopping, o qual é propriedade de terceiros� Ao fazer uma comunicação, seja uma consulta de saldo no banco ou abrindo seus e-mails, você está transferindo texto pelo roteador. Qualquer pessoa mal-intencionada pode acessar o roteador em um nível mais baixo (próximo ao har- dware), podendo verificar e ler o texto que está sendo transferido� Com isso, a pessoa pode pegar as suas informações bancárias e realizar qualquer operação fraudulenta. Eis o ataque “Homem no meio”. Deste modo, para salvar os dados deste possível ataque, precisamos criptografar os dados que estão sendo transferidos e transportados pela rede� Existem várias maneiras de fazer isso. Você deve conhecer termos como criptografia HTTPS de 128 bits e criptografia de 64 bits. A criptografia de 128 bits é uma técnica avançada e muito difícil de des- criptografar (decodificar). No caso de HTTPS, quan- do os dados estão sendo transferidos pela rede, o homem do meio ainda pode saber o que está sendo transferido, mas aquilo que ele está vendo pode não fazer sentido, pois os dados estão criptografados� 13 Somente o navegador descriptografará e exibirá, e o servidor descriptografará e usará para transações. O HTTPS é uma forma segura do protocolo HTTP, pois envolve uma camada criptografada em torno do HTTP, que é chamada de Transport Layer Security (TLS)� O HTTPS requer que um certificado TLS seja instala- do no seu servidor. Você pode aplicar certificados a diferentes protocolos, como HTTP (web), SMTP (e- -mail) e FTP (transferência de arquivo). Um certifica- do TLS funciona armazenando suas chaves geradas aleatoriamente (públicase privadas) em seu servidor� A chave pública é verificada com o cliente, e a chave privada é usada no processo de descriptografia. O HTTP é apenas um protocolo, mas quando combi- nado com TLS ou segurança da camada de transpor- te, é criptografado. Quando o navegador se conecta a um servidor HTTPS, o servidor responde com seu certificado. O navegador verifica se o certificado é válido, para isso: ● as informações do proprietário precisam corres- ponder ao nome do servidor que o usuário solicitou� ● o certificado precisa ser assinado por uma autori- dade de certificação confiável. ● Se uma dessas condições não for atendida, o usu- ário será informado sobre o problema� De modo geral, podemos dizer que o HTTPS é mais seguro que o HTTP. Existem maneiras de atacar e 14 de invadir o protocolo, mas elas exigem componen- tes comprometedores fora do controle do cliente e do servidor� Assim, toda a garantia de privacidade e segurança pode acarretar algum custo e, com o uso do HTTPS, não seria diferente� Eis dois destes custos inerentes: ● As solicitações HTTPS levam mais tempo para serem processadas� ● Por precisar de mais tempo para processar, precisa de mais hardware (o servidor utilizado). Isso também implica um custo adicional� Considere então que, para o HTTP, você usa menos energia em comparação com HTTPS, pois a comu- nicação ocorre mais rapidamente (sem criptografia e descriptografia). No entanto, não vamos nos pren- der a tais custos como limitações para o HTTPS. É altamente subjetivo, pois são custos baixos e pagos para garantir a privacidade� Deste modo, podemos responder àquela pergunta inicial: Por que temos o HTTPS se o HTTP já nos parece suficiente? Simples, ao usar o HTTPS, você fornece aos visitan- tes uma conexão segura. Eles também podem ter a confiança de que a comunicação está com o servidor e não com alguém que esteja passiva ou ativamente tentando realizar um ataque� 15 CONTENT MANAGEMENT SYSTEMS Um Content Management Systems (CMS), ou Sistema de Gerenciamento de Conteúdo, é uma ferramenta da web que permite a criação, o gerenciamento e a publicação de conteúdo em um site� E mais: com ele, você gerencia rapidamente todos os códigos por meio de uma interface fácil de entender e de grande usabilidade na criação e edição de código� Os melhores CMS são criados para facilitar o trabalho dos desenvolvedores e dos que farão a manutenção e atualização do site� Possibilita, de maneira mais prática e eficiente, fazer upload ou escrever conteúdo, editar e formatar textos, adicionar títulos, imagens e vídeos ou até modificar o design de uma página web com alguns poucos comandos� Apesar da aparente facilidade em se trabalhar com os CMS, o conceito por trás desse tipo de sistema é diferente do conceito dos chamados Host Services, como Wix e Shopify. Nos Host Services, o usuário tem o mínimo (ou quase nenhum) contato com o código fonte da página web, o que torna o sistema pouco controlado, ou seja, deixa o sistema “enges- sado”, sem a possibilidade de realizar grandes mo- dificações nos temas fornecidos. Há diversos sistemas de gerenciamento de conteúdo disponíveis, e sua escolha baseia-se na finalidade do seu site, das suas necessidades, orçamento e da pla- 16 taforma escolhida. Acaba sendo difícil restringir as opções o suficiente para escolher um sistema CMS, mas a lista de verificação a seguir ajuda a conhecer os CMS e tomar a escolha de qual utilizar� Podcast 2 WordPress Quando foi criado em 2003, o WordPress era vis- to como uma ferramenta básica de propósito úni- co: focado inteiramente em um tipo de site: blogs� Entretanto, devido ao uso massivo, não demorou muito para que seus horizontes começassem a ex- pandir� Atualmente, o WordPress está longe de ser apenas uma plataforma de blog� De fato, combina- do com o poder adicional dos plug-ins, agora é um software extremamente flexível capaz de alimentar praticamente qualquer tipo de site� De acordo com a W3Tech (2020), 35,9% de todos os sites da web utilizam um gerenciador de conteú- do� Desses, mais de 63% utilizam o WordPress para gerenciaro e criar sistemas web� Dentre os sites de- senvolvidos utilizando esse gerenciador de conteúdo, destacam-se: globo�com, usp�br, data�gov (diretório de dados abertos do governo dos Estados Unidos), cnn�com, entre outros� Como podemos verificar, o WordPress é um dos ge- renciadores de conteúdo mais populares em todo 17 https://famonline.instructure.com/files/954640/download?download_frd=1 o mundo� De fato, atende a milhares de usuários e sites, graças às suas ferramentas flexíveis e à sua interface fácil de usar� Embora não possua ferramentas básicas de cria- ção na Web, o WordPress é desenvolvido em PHP com base de dados MySQL e possui complementos extremamente úteis para criar sites funcionais dos diversos tipos, desde uma página pessoal até sites de comércio eletrônico. Suas ferramentas de aprovação de conteúdo, suporte a SSL e privilégios granulares protegem seu conteú- do. Outra característica é que o WordPress permite criar um controle de acesso por níveis administra- tivos que você mesmo define. O WordPress possui uma verificação de e-mail, apresenta notificação au- tomática de problemas e ferramentas captcha para manter um local seguro para o usuário� Ao buscar WordPress na internet, encontramos duas respostas (Figura 2): Figura 2: Resultados para a busca “WordPress”. Fonte: Autoria própria. 18 Note que, nessa pesquisa, tivemos duas respostas: “wordpress.com” e “wordpress.org”. Se você é novo no WordPress, talvez não saiba qual usar, então va- mos diferenciá-los� A principal diferença entre o WordPress�com e o WordPress.org é quem está hospedando seu site. Com o WordPress�org, você hospeda seu próprio site, arcando com os custos do servidor web de sua escolha. Por outro lado, com o WordPress.com, é o WordPress.com que cuida da instalação, configura- ção e hospedagem do seu site� Torna-se um meio mais fácil de se começar, porém, dá menos liberdade. E essa é a grande diferença. O WordPress.com permite que você configure seu site gratuitamente, mas há algumas desvantagens nisso: ● Você só pode colocar seu site em um subdomínio. ● Você não pode remover anúncios e marcas do WordPress�com do seu próprio site� ● Você ganha espaço em disco limitado (cerca de 3 GB)� ● Você não pode gerar receita com seu blog ou site� ● Você não pode instalar plug-ins ou temas que não estejam disponíveis na plataforma padrão. Com o WordPress.org, você tem mais flexibilidade, porém, tem mais trabalho: contratar um servidor de hospedagem, comprar um domínio, realizar a insta- lação (algo simples, geralmente com um clique) e 19 configurações. Contudo, nenhuma das desvantagens apresentadas no wordpress.com serão vistas, exceto por limitações no seu servidor web. A principal vantagem com o WordPress.com é que você pode gerar receita com seu site da maneira que desejar, o que é ótimo se você planeja torná-lo um negócio� SAIBA MAIS Como o melhor é uma questão subjetiva, então, conheça mais sobre o WordPress acessando ht- tps://wordpress.com e https://wordpress.org� Joomla Tal qual o WordPress, o Joomla é um CMS de código aberto, escrito em PHP com base de dados MySQL que permite gerar conteúdo da Web e aplicativos poderosos� Surgiu em 2005, com grande aceita- ção pelos desenvolvedores e empresas� Tem sido uma boa alternativa para o WordPress desde então� Apesar de compartilhar algumas características com o WordPress, o Joomla é diferente desde o início: permite várias opções de banco de dados, assim, oferece mais possibilidades e versatilidade para os desenvolvedores� Muitos aspectos, incluindo a facilidade de uso e a extensibilidade, tornaram o Joomla um dos softwa- 20 https://wordpress.com https://wordpress.com https://wordpress.org res mais populares disponíveis na web. O melhor: o Joomla é uma solução disponível gratuitamente para todos� De acordo com aW3TECHS, cerca de 4,2% dos sites desenvolvidos com CMS utilizam o Joomla como gerenciador de conteúdo� O Joomla, assim como o WordPress, também oferece modelos e extensões que podem ajudá-lo a conseguir muitas coisas na web� Devido ao fato de ser menos popular do que o WordPress, há muito menos mo- delos e extensões. SAIBA MAIS Saiba mais sobre o CMS Joomla, consultando diretamente sua documentação: https://downlo- ads.joomla.org/br/faqs-pt-br� WordPress ou Joomla? Existe uma pergunta que muitos fazem: Qual é o melhor, WordPress ou Joomla? Não existe o me- lhor, existe aquele que resolve os seus problemas. O WordPress é a melhor opção para iniciantes, pois permite que você desenvolva o sistema com mais facilidade, já que tem um repositório cheio de temas e plug-ins� Por outro lado, o Joomla vem com mais recursos embutidos. Ele pode ajudar os profissionais a criar sites mais complexos, pois oferece mais op- ções técnicas. 21 https://downloads.joomla.org/br/faqs-pt-br https://downloads.joomla.org/br/faqs-pt-br A Tabela 1 apresenta um comparativo entre WordPress e Joomla� WordPress Joomla Simplicidade Ideal para iniciantes Leva mais tempo para aprender Aparência e extensões Milhares de extensões e templates Grande quantidade de extensões e templates; porém, menos que o WordPress Finalidade Blogs, sites casuais, sites comerciais e e-commerces Sites comerciais e e-commerces Suporte Comunidade ou pagar pelo apoio (wordpress� com) Comunidade e documentação oficial Segurança Diversos plug-ins de segurança atualizados constantemente Diversos plug-ins de segurança atualizados constantemente Multilíngue Deve-se utilizar o serviço de terceiros Suporte multilíngue padrão Tabela 1: Comparação entre WordPress e Joomla. Fonte: Autoria própria. Note que não existe um melhor que o outro. Existem características que devem ser analisadas para que você utilize o melhor de cada um. Além do WordPress e do Joomla, alguns CMS se destacam: Magento, Drupla, Silverstripe, Pretashop (popular para e-com- merce), entre outros� 22 FRAMEWORKS MODEL- VIEW-CONTROLLER O padrão arquitetural Model-View-Controller (MVC) é usado para projetar e criar interfaces e a estrutura de um aplicativo� Esse padrão divide o aplicativo em três componentes interdependentes e interconectadas: Modelo, Visão e Controlador� Essa divisão arquitetural é usada para distinguir a apresentação dos dados da maneira como os dados de entrada do usuário e os dados que estão sendo mostrados� A camada Modelo é responsável pelo tratamento dos dados, ou seja, interagindo com os registros do banco de dados, como salvar, recuperar, atualizar e excluir do banco de dados de origem. Essa camada implementa a lógica de um aplicativo, que interage com o domínio de dados. Ainda, armazena o estado do objeto no banco de dados. Por exemplo, um objeto de modelo “Veículo” pode recuperar dados do banco, manipulá-los e atualizar as informações alteradas ou adicionadas de volta ao banco de dados de origem� A camada Visualização é responsável por mostrar ao usuário os dados na interface do aplicativo� A visualização desenvolve-se principalmente a partir dos dados, ou seja, vincula-se à camada Modelo, que fornece os dados necessários para mostrar ao usuá- rio. Por exemplo, se quisermos editar as informações do veículo, a camada Modelo exibirá na camada de Apresentação caixas de texto, listas suspensas, bo- 23 tões, entre outros, com base no estado do objeto do veículo. A camada Controlador é responsável por manipu- lar as interações do usuário, comunicar-se com o modelo e, com base nessa interação, selecionar a visualização apropriada para exibição. Por exemplo, a camada Controlador usa os valores da cadeia de consulta ou a entrada do usuário que foi feita na camada de aplicação e os passa para a camada Modelo� Esta, por sua vez, os utiliza para fazer a interação necessária com o banco de dados, dependendo dos valores de entrada� Para que toda a relação e interação sejam possí- veis, utilizamos os Frameworks MVC, que são bi- bliotecas que podem ser incluídas ao lado do código (JavaScript, C# etc�) para fornecer uma camada de abstração na parte superior da linguagem principal� Seu objetivo maior é ajudar a estruturar a base de código e separar as preocupações de um aplicativo nos três componentes: Modelo, Visão e Controlador� Os Frameworks MVC mais populares disponíveis são: Backbone�js, Angular�js e Laravel� Este tópico visa a comprar em alto nível os frameworks. Cada um é amplamente utilizado e fornece excelen- tes documentação e suporte à comunidade� Isso significa que você pode ter certeza de que qualquer framework escolhido cumprirá seus requisitos, além de ter suporte disponível, se necessário. 24 Backbone�JS O Backbone.js oferece uma solução minimalista e fle- xível para separar os componentes em seu aplicativo web. Como consequência de sua solução mínima, o Backbone.js é usado sem seus próprios plug-ins, tornando-o mais uma biblioteca de utilitários do que uma estrutura MVC completa� A principal característica é que o Backbone.js pos- sui uma biblioteca de plug-ins e complementos que podem ser usados para fornecer qualquer tipo de funcionalidade necessária ao aplicativo. A flexibilida- de oferecida pela modularidade torna o Backbone�js adequado ao se desenvolver um aplicativo Web com requisitos instáveis, isto é, quando há necessidade de mudanças� SAIBA MAIS Saiba sobre o Framework Backbone.js, lendo a sua documentação e o seu exemplo de uso em https://backbonejs.org/� Angular�js O Angular.js foi projetado e construído pelo Google e cresce em popularidade e aceitação todo ano� O recurso de destaque do Angular é o uso de tags e 25 https://backbonejs.org/ componentes HTML personalizados para especificar as intenções do seu aplicativo. Assim, fornece um compilador HTML que permite aos usuários criar sua própria linguagem específica de domínio, o que é caracterizado como uma fer- ramenta extremamente poderosa. A abordagem é diferente de outros frameworks, pois procura lidar com as deficiências do HTML, abstraindo o HTML, CSS e JavaScript� SAIBA MAIS Conheça o framework Angular�js tendo acesso direto à sua documentação em https://docs.an- gularjs.org/guide� Laravel O Laravel é um framework Web baseado em PHP, amplamente baseado na arquitetura MVC. Foi criado para facilitar o desenvolvimento de projetos PHP para desenvolvedores� Com o Laravel, você pensa menos sobre a configuração, arquitetura e dependências de um projeto, indo diretamente ao ponto principal do projeto� Ele fornece muitos recursos, como um sistema de autenticação completo, migrações de bancos de da- dos, um Object Relational Mapper (ORM) poderoso, paginação, entre outros� 26 https://docs.angularjs.org/guide https://docs.angularjs.org/guide SAIBA MAIS Conheça mais sobre o framework Laravel, con- sultando a sua documentação em https://laravel. com/docs/7.x/readme� 27 https://laravel.com/docs/7.x/readme https://laravel.com/docs/7.x/readme FRAMEWORKS WEB DO LADO SERVIDOR No tópico anterior, abordamos brevemente os princi- pais frameworks MVC� Neste tópico, conheceremos os quatro frameworks mais utilizados no que tange ao back-end� O back-end ou server-side (lado do servidor) é a parte do site que não fica à vista, sendo responsável por armazenar e organizar os dados e garantir que tudo do lado do cliente realmente funcione� Comunica-se com o front-end, enviando e recebendo informações a serem exibidas como uma página da web. Sempre que preenchemos um formulário de contato, digita- mos um endereço da Web ou compramos algo (qual- quer interação do usuário no lado do cliente), seu navegador envia uma solicitação ao lado do servidor, que retorna as informações em formato de código de front-end, que o navegador pode interpretar e exibir. Perceba que, para acessar páginas de qualquer apli- cativo web, você precisa de um servidor web� Esse servidortrata todas as requisições HTTP para o apli- cativo da Web, por exemplo, o IIS é um servidor da Web para aplicativos da Web ASP�NET e o Apache é um servidor da Web para aplicativos da Web PHP ou Java� A seguir, verificaremos os principais frameworks do lado do servidor: NodeJS, Asp�NET, Spring e Django� 28 NodeJS O JavaScript tornou-se uma das linguagens de pro- gramação mais populares, devido à enorme demanda por aplicativos Web. Enquanto codifica para vários navegadores, o JavaScript é quase a única opção para desenvolvedores de front-end� Ok, você pode conhecer outras ou já ter ouvido falar de CoffeeScript, TypeScript ou Dart. Porém, todas elas, de um modo ou outro, se resumem ao JavaScript, apenas adicio- nando outros recursos� Com o surgimento e a rápida aceitação do Node�JS, o JavaScript não se limita mais ao desenvolvimento de front-end, e o desenvolvimento de back-end não é mais um “bicho de sete cabeças” para aqueles que buscam aprender a desenvolver do lado do servidor� O Node�js fornece recursos para criar seu próprio servidor Web, que manipulará solicitações HTTP de forma assíncrona, sendo usado para criar diferentes tipos de aplicativos, como aplicativos de linha de comando, aplicativos da Web, aplicativos de bate- -papo em tempo real, entre outros� Apesar da sua versatilidade e do seu vasto conjunto de aplicações que podem ser desenvolvidas com o Node.JS, é usado principalmente para criar progra- mas de rede, como servidores da Web, semelhantes ao PHP, Java ou ASP�NET� O Node�JS pode ser instalado no Windows, Mac, Linux e Solaris. Para o desenvolvimento, você preci- 29 sa das seguintes ferramentas: (1) Node�JS; (2) NPM (gerenciador de pacotes); editor de texto (notepad++, visual studio code, bloco de notas, entre outros)� Nosso objetivo aqui é o de apresentar o Node.JS, portanto, não é o foco detalhar a instalação dele e das demais ferramentas� Os procedimentos de insta- lação você pode verificar diretamente no site oficial do NodeJS: https://nodejs.org/pt-br/docs/� Asp�NET O ASP.NET é um framework para o desenvolvimen- to de aplicativos web que possuem código aberto� Foi criado pela Microsoft no início dos anos 2000, e é executado no Windows. O ASP.NET permite que os desenvolvedores criem aplicativos web, servi- ços web e sites dinâmicos, usando HTML, CSS e JavaScript� Em 2009, foi adicionada uma nova ferramenta ao arsenal do ASP�NET, o chama- do ASP�NET MVC� Ele nos dá o poder de usar uma abordagem de três camadas, o padrão Model View Controller que temos estudado� Com isso, essa divisão do MVC tornou-se realmente útil quando se trata de desenvolver aplicativos web mais complexos, pois fornece a capacidade de tra- balhar e projetar um aspecto do aplicativo por vez� Além de facilitar o teste do aplicativo. Os componentes MVC são fracamente acoplados, mas também tendem a estar em seções separadas 30 https://nodejs.org/pt-br/docs/ dentro do aplicativo� Esse padrão no ASP�NET MVC tem muitos recursos e benefícios: ● Oferece, separadamente, o gerenciamento da ló- gica de entrada, lógica de negócio e a lógica da in- terface do usuário� ● Oferece agilidade no desenvolvimento, uma vez que pode ser executado de modo paralelo, onde um desenvolvedor trabalha na interface, o outro na lógica de negócio� ● Como os componentes são separados (fracamente acoplado), os testes são realizados de maneira mais rápida, componente a componente� ● Capacidade de usar recursos existentes do ASP. NET, como páginas mestras, controles de usuário, expressões embutidas, modelos, controles de vin- culação de dados e servidor declarativo� ● Suporte para recursos de segurança existentes, como autenticação de formulários e autenticação do Windows, autorização de URL, associações e funções. O ASP.NET é um framework para o Sistema Operacional Windows� Entretanto, ao observar a ne- cessidade de utilização do ASP�NET em múltiplas plataformas, a Microsoft lançou em 2016 o ASP�NET Core, framework de código aberto e multiplataforma, que pode rodar em Mac, Linux e Windows. O ASP.NET Core é um framework modular que permi- te que os desenvolvedores utilizem apenas os com- ponentes necessários para um determinado aplica- 31 tivo e, ao mesmo tempo, forneçam uma plataforma estável e suportada para manter os aplicativos em execução. Os desenvolvedores que conhecem o ASP�NET podem aproveitar seus conhecimentos em C# ou VB�NET e podem rapidamente captar as diferenças de estrutura introduzidas no ASP�NET Core� SAIBA MAIS Conheça mais sobre o framework ASP�NET e o ASP�NET Core tendo acesso direto à sua docu- mentação em https://docs.microsoft.com/pt-br/ aspnet/core/?view=aspnetcore-3.1 � Spring O Spring é um framework Java utilizado para a cons- trução de aplicativos web� Oferece ferramentas ro- bustas para a construção de aplicativos da Web e é uma escolha popular entre as empresas� Seu grande destaque é o Spring Security, um fra- mework para autenticação e autorização para apli- cativos Java Spring. O Spring Security é altamente personalizável e serve como a espinha dorsal de muitos aplicativos corporativos� O Spring Vault é outro framework do Spring que for- nece armazenamento e gerenciamento fortes dos 32 https://docs.microsoft.com/pt-br/aspnet/core/?view=aspnetcore-3.1 https://docs.microsoft.com/pt-br/aspnet/core/?view=aspnetcore-3.1 dados confidenciais ou que precisam de maior se- gurança, incluindo chaves de criptografia ou nomes de usuário e senhas usados para acessar outros aplicativos ou serviços� Comparado a outros frameworks, o Spring é muito maduro� Semelhante ao ASP�NET Core, o Spring tem poucas falhas no que diz respeito aos problemas de segurança mais comuns. No entanto, a injeção SQL é seu maior problema, pois você precisa parametrizar consultas usando código personalizado ou usar um Mapeamento Objeto-Relacional (ORM) separado, como o Hibernate� SAIBA MAIS Conheça mais sobre o framework Spring tendo acesso direto a sua documentação, que estão disponíveis em: https://docs.spring.io/spring- -boot/docs/current/reference/htmlsingle/ � Django O Django é um framework Python de alto nível, de có- digo aberto e fortemente usado no desenvolvimento de sistemas web MVC, com uma especificidade: o padrão de desenvolvimento Model, View, Template (MVT)� O MVT é um pouco diferente do MVC. Realmente, a principal diferença entre os dois padrões é que o 33 https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/ https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/ próprio Django cuida da parte do Controller (código de software que controla as interações entre o Model e o View), deixando-nos com o modelo. O modelo é um arquivo HTML misturado com a Django Template Language (DTL)� O ambiente de desenvolvimento do Django consiste em instalar e configurar Python, Django e um siste- ma de banco de dados� Como o Django lida com aplicativos da web, vale ressaltar que você também precisará de uma configuração do servidor da web. SAIBA MAIS Conheça mais sobre o framework Django tendo acesso direto a sua documentação através do link https://docs.djangoproject.com/pt-br/3.0/ � 34 https://docs.djangoproject.com/pt-br/3.0/ CONSIDERAÇÕES FINAIS Começamos apresentando conceitos sobre a segu- rança de dados. Fizemos, assim, uma comparação entre as definições de autenticação, autorização e controle de acesso, três conceitos diferentes e que normalmente causam algumas confusões quanto a suas conceitualizações. No geral, eles trabalham juntos e, por isso, nos parece ser um conceito só, mas não são� Estudamos, em seguida, o conceito de CMS e os prin- cipais sistemas: WordPress e Joomla� Ambos têm o mesmo propósito: facilitar a vida do desenvolvedor� Facilitar no sentido de agilizar e organizar o trabalho. Ao final, retomamos o conceito de MVC, uma ar- quitetura que proporciona um desenvolvimento em módulos� Com isso, pudemos apresentar alguns fra- meworks: NodeJS,com uma abordagem relacionada ao JavaScript; Asp�NET; Spring e Django� 35 SÍNTESE Frameworks Model-View-Controller (MVC) • Backbone.JS; • Angular.JS; • Laravel. Frameworks web do lado servidor: Node, Asp.net, Spring E Django • NodeJS; • ASP.NET; • Spring; • Django. SEGURANÇA DOS DADOS Segurança de dados • Autenticação; • Autorização; • Controle de Acesso; • Criptografia; • HTTPS. • WordPress; • Joomla; • WordPress ou Joomla? Content management systems (CMS) PROGRAMAÇÃO BACK-END Neste e-book, conhecemos os principais frameworks disponíveis no mercado. Contudo, até aprender a trabalhar com eles, foi necessário retomar alguns tópicos e introduzir outros. São eles: Referências Bibliográficas & Consultadas AGUILAR, L. J. Fundamentos de programação: algoritmos, estruturas de dados e objetos� 3� ed� Porto Alegre: AMGH, 2011 [Biblioteca Virtual]� ALVES, W� P� Linguagem e lógica de programação� São Paulo: Erica, 2014� [Biblioteca Virtual]� BARRETO, J� S�; ZANIN, A�; MORAIS, I� S�; VETTORAZZO, A� S� Fundamentos de segurança da informação� Porto Alegre: SAGAH, 2018� BERNARDO, H� G� Alan Turing: a tragédia de um gênio� São Paulo: Chambel Multimedia, 2015� COMPOJOOM� O que é Joomla? Disponível em: https://compojoom.com/what-is-joomla� Acesso em: 10 abr� 2020� CRYPTOID� Criptografia Simétrica e Assimétrica: Qual a diferença entre elas? Disponível em: https://cryptoid.com.br/banco-de- -noticias/29196criptografia-simetrica-e-assimetri- ca/� Acesso em: 10 abr� 2020� ELMASRI, R�; NAVATHE, S� B� Sistema de banco de dados. 6. ed. São Paulo: Pearson Addison-Wesley, 2011 [Biblioteca Virtual]� FLANAGAN, D. JavaScript: o guia definitivo� 6� ed� Porto Alegre: Bookman, 2013 [Biblioteca Virtual]� HEUSER, C. A. Projeto de banco de dados. 6� ed� Porto Alegre: Bookman, 2009 [Biblioteca Virtual]� IGHODARO, N� How Laravel implements MVC and how to use it effectively. Disponível em: https:// blog.pusher.com/laravel-mvc-use/� Acesso em: 10 abr� 2020� KERR, D� An introduction to MVC frameworks� Disponível em: https://blog.scottlogic. com/2013/12/06/JavaScript-MVC-frameworks. html� Acesso em: 10 abr� 2020� KIM, D�; SOLOMON M� G� Fundamentos de Segurança de Sistemas de Informação� Rio de Janeiro: LTC, 2014� MEDEIROS, L. F. Banco de dados: princípios e prática� Curitiba: InterSaberes, 2013 [Biblioteca Virtual]� NIEDERAUER, J. Desenvolvendo websites com PHP� São Paulo: Novatec� 2004� PRESSMAN, R�; MAXIM, B� Engenharia de Software: uma abordagem profissional� 8� ed� Porto Alegre: AMGH, 2016� https://blog.pusher.com/laravel-mvc-use/ https://blog.pusher.com/laravel-mvc-use/ PUGA, S.; FRANÇA, E.; GOYA, M. Banco de dados: implementação em SQL, PL/SQL e Oracle 11g� São Paulo: Pearson Education do Brasil, 2013 [Biblioteca Virtual]� SOARES, W� PHP 5: Conceitos, Programação e Integração com Banco de Dados� 7� ed� São Paulo: Erica, 2013 [Minha Biblioteca]� TUTORIALSTEACHER. ASP.NET MVC Tutorials� Disponível em: https://www.tutorialsteacher.com/ mvc/asp.net-mvc-tutorials� Acesso em 12 abr� 2020� W3SCHOOL� Métodos de solicitação HTTP� Disponível em: https://www.w3schools.com/tags/ ref_httpmethods.asp� Acesso em: 15 abr� 2020� W3TECHS� Usage statistics and Market share of Joomla. Disponível em: https://w3techs.com/te- chnologies/details/cm-joomla� Acesso em: 10 abr� 2020� W3TECHS� Usage statistics and Market share of WordPress. Disponível em: https://w3techs.com/ technologies/details/cm-wordpress� Acesso em: 10 abr� 2020� https://w3techs.com/technologies/details/cm-joomla https://w3techs.com/technologies/details/cm-joomla https://w3techs.com/technologies/details/cm-wordpress https://w3techs.com/technologies/details/cm-wordpress INTRODUÇÃO SISTEMAS CMS E FRAMEWORKS Segurança de dados Criptografia HTTPS CONTENT MANAGEMENT SYSTEMS WordPress Joomla WordPress ou Joomla? FRAMEWORKS MODEL-VIEW-CONTROLLER Backbone.JS Angular.js Laravel FRAMEWORKS WEB DO LADO SERVIDOR NodeJS Asp.NET Spring Django CONSIDERAÇÕES FINAIS Síntese