UNIVERSIDADE FEDERAL FLUMINENSE Edney Meritello Mota. Segurança de Aplicações Web em ASP.NET

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

Download "UNIVERSIDADE FEDERAL FLUMINENSE Edney Meritello Mota. Segurança de Aplicações Web em ASP.NET"

Transcrição

1 UNIVERSIDADE FEDERAL FLUMINENSE Edney Meritello Mota Segurança de Aplicações Web em ASP.NET Niterói 2010

2 Edney Meritello Mota Segurança de Aplicações Web em ASP.NET Trabalho de Conclusão de Curso submetido ao Curso de Tecnologia em Sistemas de Computação da Universidade Federal Fluminense como requisito parcial para obtenção do título de Tecnólogo Computação. Orientador(a): Juliana Mendes Nascente Silva, NITERÓI 2010 em Sistemas de

3 Edney Meritello Mota Segurança de Aplicações Web em ASP.NET Trabalho de Conclusão de Curso submetido ao Curso de Tecnologia em Sistemas de Computação da Universidade Federal Fluminense como requisito parcial para obtenção do título de Tecnólogo em Sistemas Computação. Niterói, de de Banca Examinadora Prof. Diego Nunes Brandão Prof. Marcelo Panaro de Moraes Zamith Profa. Juliana Mendes Nascente Silva, Msc. Orientadora UFF - Universidade Federal Fluminense de

4 Dedico este trabalho a meus pais, meu irmão e toda a minha família que desde sempre me ajudaram a conquistar tudo o que tenho hoje. Se fui capaz de terminar o meu curso de graduação é graças ao esforço e apoio que me deram durante toda a minha vida.

5 AGRADECIMENTOS A meu pai Eliel Silveira da Mota e minha mãe Denise Coimbra Meritello Mota que são os responsáveis pela pessoa que sou hoje. A meu irmão Anderson Meritello Mota que sempre se encontrou ao meu lado nas horas que mais precisei. Aos meus professores que me ajudaram a progredir durante todos os anos que cursei. Aos colegas de curso pelo incentivo, troca de experiências e amizade que me conferiram. A minha orientadora Juliana Nascente pelo estímulo e atenção que me concedeu durante a elaboração do trabalho.

6 Não desista enquanto você ainda for capaz de fazer um esforço a mais. É nesse algo a mais que está a sua vitória. Roberto Shinyashiki

7 RESUMO Além de ser o meio de difusão da informação mais utilizado atualmente, a Internet está sendo considerada uma plataforma computacional de execução de aplicações. Tais aplicações, também chamadas aplicações Web, tem facilitado atividades cotidianas de seus usuários, pois oferecem a realização de variados serviços, como por exemplo, pagamentos de faturas, acesso a bancos, sites de compras, entre outros, sem que o usuário tenha que sair de casa ou do trabalho. Outros aplicativos provem o entretenimento, comunicação entre usuário e difusão de informações. Atualmente, a Internet também tem sido considerada um novo meio de armazenamento de informações e de execuções de aplicações, uma vez que pode ser vista como um conjunto de recursos computacionais distribuídos. Um exemplo disso é a idéia de computação nas nuvens ou clouding computing que está sendo comercializada nos dias de hoje. Considerando este cenário, o acesso de um usuário, independente do tipo de aplicação, gera diversas transmissões de dados. Essas transmissões de dados podem ser confidenciais como nome de usuário e senha ou transmissões de dados públicos e não confidenciais. Logo, o interesse nas informações de terceiros por parte de pessoas má intencionadas cresceu muito. Os ataques às aplicações disponibilizadas na Internet são frequentes. Para evitar ataques a dados métodos de segurança como autenticação, autorização, validação de dados, criptografia e assinatura digital são implementados em aplicações Web. Este trabalho tem como objetivo apresentar um estudo detalhado sobre a implementação de tais metodologias de segurança em aplicações Web que são concebidas utilizando especificamente o ASP.NET. No decorrer do trabalho são apresentados códigos implementados através do Visual Studio 2010, programa desenvolvido pela Microsoft, no qual trabalha com a plataforma ASP.NET. Palavras-chaves: ASP.NET, autenticação, autorização, validação de dados, criptografia, assinatura digital, aplicação Web e segurança.

8 ABSTRACT Besides being the means of dissemination of information most currently used, the Internet is being considered as a computing platform for running applications. Such applications, also called Web applications, has facilitated the daily activities of its users, providing the performance of several services, for example payments of invoices, access to banks, shopping sites, among others, without the user having to leave home or work. Other applications comes the entertainment, communication between user and information dissemination. Currently, the Internet has also been considered as a new mean for storing information and execution of applications, since it can be seen as a set of distributed computing resources. An example is the idea of cloud computing or clouding that is being marketed today. Given this scenario, access to a user, regardless of the type of application, generates several data transmissions. Such data transmissions may be confidential as a user name and password or data confidential and not public. Soon, interest in information of third parties by bad intentioned people grew a lot. Attacks on applications available on the Internet are common. To prevent attacks on data security methods such as authentication, authorization, data validation, encryption and digital signatures are implemented in Web applications This document aims to present a detailed study on the implementation of such security methodologies in web applications that are specifically designed using ASP.NET. During this document are presented code implemented through Visual Studio 2010, a program developed by Microsoft, which works with the ASP.NET platform. Key words: ASP.NET, authentication, authorization, data validation, encryption, digital signature, web applications e security.

9 LISTA DE ILUSTRAÇÕES Figura 1: Fluxo da autenticação...22 Figura 2: Configuração da autenticação Windows...32 Figura 3: Opções para autenticação...32 Figura 4: Sub-rotina de acesso ao objeto IPrincipal...34 Figura 5: Utilização do elemento <identity>...34 Figura 6: Declaração do elemento <forms> na autenticação Forms...36 Figura 7: Método RedirectFromLoginPage() da classe FormsAuthentication...36 Figura 8: Método SignOut() em conjunto com o RedirectToLoginPage()...37 Figura 9: Definindo as credenciais do usuário...37 Figura 10: Lendo a identidade do usuário...38 Figura 11: Sub-rotina ao objeto IPrincipal para autenticação Forms...39 Figura 12: Aplicação comunicando-se com o banco de dados do usuário e o Web Server do Passport...40 Figura 13: Autenticação Passport...41 Figura 14: Sub-rotina de acesso para autenticação Passport...42 Figura 15: Evento click do botão SignOut para remover os cookies do Passport...42 Figura 16: Elementos da autorização...45 Figura 17: Atributo user da autorização...46 Figura 18: Negando acesso a todos os usuários exceto Raphael...46 Figura 19: Utilizando o atributo roles...47 Figura 20: Métodos gerenciadores de funções...48 Figura 21: Configurando o uso de funções...48 Figura 22: Utilizando o atributo verbs...49 Figura 23: Definindo o módulo no arquivo de configuração...50 Figura 24: Restringindo acesso a webform.aspx...52 Figura 25: Validando as URLs com o BeginRequest...53 Figura 26: httpmodule instalado...54

10 Figura 27: Criando e executando uma consulta...56 Figura 28: Código SQL correto...57 Figura 29: Código malicioso...57 Figura 30: Definição do RequiredFieldValidator...59 Figura 31: Definição do CompareValidator...59 Figura 32: Uso do ControlToCompare...60 Figura 33: Definição do RangeValidator...61 Figura 34: Definição do RegularExpressionValidator...62 Figura 35: Evento OnServerValidate...63 Figura 36: Código de validação para o CustomValidator...63 Figura 37: Definição do ValidationSummary...64 Figura 38: Utilizando Regex e IsMatch()...65 Figura 39: Código de exemplo do método Match()...66 Figura 40: Código de exemplo do método Matches()...67 Figura 41: Utilizando o Replace()...68 Figura 42: Utilização do método Split()...69 Figura 43: Método principal do RijndaelManaged...72 Figura 44: Método para criptografar dados com o RijndaelManaged...75 Figura 45: Método para descriptografar dados com o RijndaelManaged...77 Figura 46: Método principal do AesManaged...79 Figura 47: Método para criptografar da classe AesManaged...80 Figura 48: Método para descriptografar da classe AesManaged...82 Figura 49: Método Main() da classe HMACSHA Figura 50: Método EncodeFile() da classe HMACSHA Figura 51: Método DecodeFile() da classe HMACSHA Figura 52: Método Main() da classe RC2CryptoServiceProvider...87 Figura 53: Método criptográfico da classe DESCryptoServiceProvider...89 Figura 54 a): Código utilizando a classe TripleDESCryptoServiceProvider...88 Figura 54 b): Método EncryptTextToFile()...89 Figura 54 c): Método DecryptTextFromFile()...89 Figura 55 a): Utilizando memória na classe TripleDESCryptoServiceProvider...90 Figura 55 b): Método EncryptTextToMemory()...91 Figura 55 c): Método DecryptTextFromMemory()...91

11 Figura 56 a): Implementação criptográfica da classe DSACryptoServiceProvider...94 Figura 56 b): Método DSASignHash()...94 Figura 56 c): Método DSAVerifyHash()...95 Figura 57 a): Implementação criptográfica da classe RSACryptoServiceProvider...96 Figura 57 b): Métodos RSAEncrypt() e RSADecrypt()...97

12 LISTA DE TABELAS Tabela 1: Lista de controle de acesso padrão do arquivo de configuração...51 Tabela 2: Primitivos criptográficos...70

13 LISTA DE ABREVIATURAS E SIGLAS IIS Internet Information Service LAN Local Area Network ACL Access Control List URL Uniform Resource Locator HTTP Hypertext Transfer Protocol XML Extensible Markup Language SHA-1 Secure Hash Algorithm HMAC Hash-based Message Authentication Code SDK Software Development Kit CPF Cadastro de Pessoa Física SQL Structured Query Language JAAS Java Authentication and Authorization Service API Application Programming Interface AES Advanced Encryption Standard CSP Cryptographic Service Provider DAS Digital Signature Algorithm CAPI Cryptography Application Programming Interface PHP Hypertext Preprocessor GAC Global Assembly Cache CLR Common Language Runtime MSIL Microsoft Intermediate Language

14 SUMÁRIO RESUMO...7 ABSTRACT...8 LISTA DE ILUSTRAÇÕES...9 LISTA DE TABELAS...12 LISTA DE ABREVIATURAS E SIGLAS INTRODUÇÃO Segurança autenticação AUTORIZAÇÃO validação de dados EXPRESSÕES REGULARES CAPTCHA criptografia ALGORITMOS DE CHAVE SIMÉTRICA ALGORITMOS DE CHAVE ASSIMÉTRICA ASSINATURA DIGITAL IMPLEMENTANDO A AUTENTICAÇÃO no ASP.NET provedor de autenticação windows provedor de autenticação Forms provedor de autenticação passport Controlando acesso a recursos com a autorização URL Authorization file authorization Falha de segurança - canonicalization UTILIZANDO O ARQUIVO GLOBAL.ASAX HTTPMODULE Segurança com a validação de dados CONTROLES de validação DO ASP.NET...58

15 5.1.1 REQUIREDFIELDVALIDATOR COMPAREVALIDATOR RANGEVALIDATOR REGULAREXPRESSIONVALIDATOR CUSTOMVALIDATOR VALIDATIONSUMMARY Expressões regulares no ASP.NET Como usar a criptografia no ASP.NET Criptografia de chave simétrica CLASSE RIJNDAELMANAGED CLASSE AESMANAGED CLASSE HMACSHA CLASSE RC2CRYPTOSERVICEPROVIDER CLASSE DESCRYPTOSERVICEPROVIDER CLASSE TRIPLEDESCRYPTOSERVICEPROVIDER criptografia de chave assimétrica CLASSE DSACRYPTOSERVICEPROVIDER CLASSE RSACRYPTOSERVICEPROVIDER assinatura digital conclusões e trabalhos futuros REFERÊNCIAS BIBLIOGRÁFICAS...105

16 16 1 INTRODUÇÃO No contexto globalizado de hoje, a Internet se tornou um dos meios de comunicação mais utilizados no mundo. O aumento de atividades como busca, obtenção e troca de informações, oferecidas pela Internet, e consequentemente as funções que suas aplicações oferecem a seus usuários, faz com que o fluxo de informações públicas e privadas cresça em níveis muito elevados. Como resultado, surgem novos usuários interessados na busca de informações alheias para benefício próprio, sendo inevitável impedir a tentativa de intercepções. Atitudes como esta se tornam graves quando a aplicação não se encontra preparada para bloquear, ou evitar, invasões ou roubo de informações realizadas por usuários mal intencionados. O ASP.NET é uma plataforma da Microsoft para desenvolvimento de aplicações Web. Sucessor do ASP, Active Server Pages, o ASP.NET é um componente do IIS, Internet Information Services, que permite criar páginas dinâmicas através de uma linguagem de programação integrada do.net Framework. O.NET Framework é um pacote gratuito disponibilizado no site oficial da Microsoft que tem a finalidade de prover uma plataforma única de desenvolvimento e execução de sistemas e aplicações. Dessa forma, todo e qualquer código escrito para.net pode ser executado em qualquer dispositivo que possua um framework, em outras palavras, o programador deixa de escrever o código para um sistema ou dispositivo e passa a escrevê-lo para a plataforma.net. O.NET é executado sobre um Ambiente de Execução Independente de Linguagem ou Common Language Runtime CLR. A CLR é capaz de executar, atualmente, mais de 20 diferentes linguagens de programação interagindo entre si como uma única linguagem. O código escrito será compilado pela linguagem utilizada gerando um código intermediário em uma linguagem chamada MSIL ou Microsoft Intermediate Language. Este novo código gera um arquivo na linguagem

17 17 de baixo nível, Assembly, e pode ser usado em qualquer outra aplicação que utilize a plataforma. Dessa forma, uma aplicação poderá possuir arquivos escritos em diferentes linguagens de programação. Exemplos de linguagens suportadas pelo.net são: C# (C Sharp), Visual Basic, Java, C++, JScript, J#, dentre outras. Outras tecnologias também possibilitam o desenvolvimento de aplicações Web, porém o que difere na plataforma ASP.NET é o fato de ser fortemente integrada com ferramentas de programação, acesso a dados e segurança. O ASP.NET proporciona um alto nível de consistência no desenvolvimento de aplicações. Vários métodos de segurança podem ser implementados visando obter maior segurança na aplicação. Entre eles a autenticação, que verifica a identidade do usuário garantindo a autenticidade de quem envia e recebe informações. A autorização define os recursos que o usuário ou aplicação deverá ter acesso. A validação de dados garante a entrada dos dados em seus tipos e formatos válidos. A criptografia previne que usuários não autorizados identifiquem a mensagem ou informação que está sendo transmitida e por fim, a assinatura digital certifica quem realmente enviou a mensagem ou informação, provendo assim a certeza da origem da informação. O objetivo deste trabalho é apresentar como pode ser realizada a implementação destes métodos de segurança em aplicações desenvolvidas em ASP.NET, fazendo uso de ferramentas específicas da plataforma. Este trabalho é composto de seis capítulos. O Capítulo 2 descreve conceitos de segurança, apresentando tópicos sobre autenticação, autorização, validação de dados, criptografia e assinatura digital. Após o Capítulo 2, o leitor terá acesso a uma leitura mais aprofundada dos componentes utilizados na implementação da segurança. Especificamente, o Capítulo 3 aborda as formas de utilização e manipulação da autenticação em aplicações ASP.NET que pode ser implementada fazendo uso de uma das três técnicas: provedor de autenticação Windows, provedor de autenticação Forms ou provedor de autenticação Passport. Para o Capítulo 4 foi selecionada a autorização como tema, descrevendo as técnicas de autorização por arquivo ou file authorization e autorização por URL ou URL authorization. No Capítulo 5 será abordada a validação de dados no ASP.NET

18 18 demonstrando como utilizar seus controles próprios de validação de dados antes de executar uma ação. Por fim, a criptografia e a assinatura digital são os temas do Capítulo 6, onde são apresentadas as diversas classes, disponibilizadas pelo ASP.NET, responsáveis pela manipulação dos algoritmos criptográficos como Rijndael, AES, HMACSHA1, RC2, DES, TripleDES, DSA e RSA. Em todo o trabalho, cada apresentação de um conteúdo é seguida de um exemplo de implantação do mesmo, visando facilitar o entendimento do assunto juntamente com sua forma de desenvolvimento.

19 19 2 SEGURANÇA A Internet se tornou um dos meios de comunicação mais utilizados no mundo (Recuero, 2000). Um dos motivos dessa disseminação é que a Internet, diferente de outros meios de comunicação, proporciona uma interação entre diferentes usuários, em diferentes partes do mundo. Um exemplo disso é a videoconferência, onde usuários em locais diferentes podem se comunicar por áudio e vídeo através da rede interligando suas máquinas (Leopoldino, 2001). A Internet pode ser vista também como um conjunto de recursos interconectados, onde tais recursos computacionais podem ser compartilhados por um ou mais usuários. O compartilhamento de recursos é muito comum em aplicações na área de E-Science, onde um banco de dados pode, por exemplo, ser compartilhado e atualizado por vários institutos de pesquisas da área. Apesar dos benefícios que a Internet nos oferece, ela pode não ser um meio de comunicação seguro (Aparecida Rios, 2000). Falhas de segurança podem ocorrer tanto em aplicações quanto na própria rede. Falhas em aplicações ocorrem principalmente por erros em sua implementação ou falta de validação necessária perante os dados, enquanto que falhas de segurança na rede podem ser causadas por falta de monitoramento do fluxo de dados, ou seja, pode não haver um Firewall devidamente instalado, ou um antivírus desatualizado por exemplo. Falhas como essas podem permitir que usuários mal intencionados interceptem informações pessoais ou sigilosas. Para aumentar a segurança dos dados e tentar evitar, ou dificultar, que os mesmos sejam adulterados ou interceptados foram desenvolvidas técnicas que protegem os sistemas dos diversos ataques que supostamente venham a sofrer. A autenticação, autorização, validação de dados, criptografia e assinatura digital são bons exemplos de técnicas que aumentam a segurança de um sistema.

20 20 A autenticação tem como objetivo identificar o usuário a partir dos seus dados de entrada como nome de usuário e senha. Após sua identificação ser confirmada o usuário é tratado pela aplicação como um usuário autenticado, significando que a partir deste momento esta conhece o usuário que está conectado. Já a autorização define as permissões e restrições, de cada usuário, para determinados arquivos ou páginas, em outras palavras, controla a autorização do acesso para um determinado recurso. A validação de dados, por sua vez, faz a verificação dos dados de entrada para garantir que os mesmos foram digitados corretamente, dessa forma os dados poderão ser manipulados de forma correta pela aplicação. A criptografia executa o seu papel na manipulação dos dados, ou seja, ela manipula os dados, através de algoritmos específicos, impedindo que qualquer entidade, um usuário ou sistema, que não possua a chave correta para sua visualização, obtenha o seu conteúdo. Por fim, a assinatura digital consiste na assinatura do documento, ou mensagem, que será enviada para garantir a autenticidade do mesmo. Estes meios de segurança são muito utilizados atualmente e podem garantir uma segurança mais eficaz em um sistema Web uma vez que cada técnica realiza procedimentos de verificação e validação das informações passadas ao sistema. Este trabalho explora a utilização de tais técnicas implementando códigos específicos através da plataforma ASP.NET. Os métodos de segurança serão descritos mais detalhadamente nas próximas subseções. 2.1 AUTENTICAÇÃO A autenticação baseia-se na identificação do usuário, ou seja, verifica em uma entidade, como um banco de dados, se aquele usuário é quem diz ser. As linguagens disponíveis no mercado permitem autenticar usuários através de diferentes formas. Cada linguagem possui a sua própria implementação para tal operação, porém todas tendem a seguir sempre o mesmo fluxo de execução de tal procedimento.

21 21 Figura 1: Fluxo da autenticação. A Figura 1 exemplifica o fluxo de execução de um procedimento de autenticação para um sistema Web. O fluxo inicia na página de login, onde é requisitado o nome de usuário e senha. Estes são enviados a uma página que contém um código próprio para verificar se os dados de entrada digitados pelo usuário estão cadastrados ou são válidos. Na Figura 1, essa página é representada por um retângulo verde claro com as bordas pontilhadas. Após a verificação, caso a autenticação for realizada com sucesso o usuário é direcionado a página restrita, caso contrário, é redirecionado a página de login novamente. Especificamente, o ASP.NET, apesar de realizar o mesmo procedimento para autenticar um usuário, possui algumas particularidades. Existem três formas de implementação: provedor de autenticação Windows, provedor de autenticação de Formulários (Forms) ou provedor de autenticação Passport (MSDN, 1). As três formas são explicadas detalhadamente no Capítulo 3.

22 AUTORIZAÇÃO A autorização tem como objetivo definir as permissões de uma identidade perante o sistema, em outras palavras é a responsável por conceder ou negar um determinado recurso a identidade em questão, um usuário ou um sistema. Como na autenticação, as diversas linguagens disponíveis no mercado possuem suas próprias formas de autorizar um recurso. Como exemplo, a linguagem Java utiliza a API JAAS (Java Authentication and Authorization Service) que é o seu serviço que controla o acesso e autorização em aplicações JavaEE (Java Enterprise Edition), enquanto no ASP.NET a autorização pode ser realizada através de duas maneiras: file authorization ou URL authorization. A autorização por arquivo, ou file authorization, é indicada quando a aplicação deve restringir acesso a determinados arquivos, esses arquivos podem ser tanto figuras como arquivos importantes que possuam dados restritos. A autorização por URL, ou URL authorization, é indicada quando se deve bloquear o acesso do usuário a páginas restritas. As formas de implementação da autorização no ASP.NET encontram-se no Capítulo VALIDAÇÃO DE DADOS Normalmente a validação de dados é empregada em formulários de inscrições ou cadastro utilizados em um aplicativo, onde há uma necessidade de confirmar os dados inseridos nos campos antes de submeter o mesmo, ou seja, redirecionar o seu conteúdo ao programa responsável por processar os seus dados. Assim, a validação de dados é utilizada para validar os dados da entidade em questão, comumente um controle ASP.NET, perante alguma condição ou regra, se os dados fornecidos são válidos ou não. A validação dos dados de entrada, ou seja, os dados inseridos pelo usuário, em um formulário, é necessária, pois através de seus campos é possível

23 23 executar ataques, como por exemplo, a Injeção SQL. A Injeção SQL consiste em inserir uma consulta SQL, ou parte dela, em um campo de formulário, seja ele qual for, a fim de que o código desenvolvido gere uma consulta violada, a ser processada no servidor de banco de dados. A consulta sendo válida será executada pelo servidor de banco de dados e consequentemente concluirá o ataque (MSDN, 2). Existe uma série de técnicas para se validar um formulário, dentre elas podem-se citar: Expressões Regulares e Captcha EXPRESSÕES REGULARES As expressões regulares são fundamentais, pois através delas pode-se validar se um campo do formulário recebeu o tipo e formato de dado correto. Por exemplo, se uma aplicação possui um campo para a inserção de um , então deve-se inserir um em um formato válido e não uma sequência aleatória de números ou de caracteres e símbolos. Para realizar essa validação cria-se um padrão de texto, baseado em uma sequência de caracteres com funções especiais, símbolos, caracteres literais, que juntos formam uma expressão, para compará-lo com a entrada digitada no campo. Se a entrada for compatível com o padrão então o resultado é retornado como válido, caso contrário, como inválido e requisita-se ao usuário que preencha o campo corretamente. O padrão dependerá do tipo de dado a ser verificado. Pode-se ter um padrão que permita que sejam digitados somente números em um campo ou que sejam permitidos somente caracteres alfanuméricos. Para cada finalidade é possível criar um padrão diferente baseado na entrada que o campo deve receber (Marinho Jargas, 2004).

24 CAPTCHA O Captcha (Completely Automated Public Turing Test to tell Computers and Humans Apart) é responsável por verificar se a entidade que fornece dados é ou não um ser humano. O Captcha foi desenvolvido para evitar ataques como requisições de um programa automático, que simplesmente poderia realizar diversas operações para obtenção de dados ou realizar envios em massa de spams para milhões de pessoas. A forma mais comum de Captcha consiste em uma imagem contendo uma série de caracteres aleatórios destorcidos. Ao executar um comando ou enviar um dado a entidade será requisitada a preencher os caracteres que aparecerão na imagem. Se os caracteres forem válidos então a entidade é humana, caso contrário ela não conseguirá executar sua ação. Para um computador é praticamente impossível processar dados visuais ou reconhecer padrões devido ao fato dele não possuir inteligência semelhante aos humanos. Atualmente existem diversos algoritmos de reconhecimento de padrões. Estes algoritmos foram desenvolvidos para realizar um tipo de tarefa específica. Utilizando um desses algoritmos, um computador possuiria uma chance remota de reconhecer um Captcha, porém esta tarefa é quase impossível visto que um Captcha é desenvolvido justamente para produzir diferentes padrões de imagens ou desenhos visando evitar que algoritmos de reconhecimento de padrões consigam decifrá-lo. Caso um computador reconhecesse um Captcha o programa que o decifrasse não seria capaz de decifrar um segundo Captcha produzido, pois o algoritmo utilizado pelo programa reconheceria somente o padrão que lhe foi especificado durante o seu desenvolvimento. Assim, o Captcha se torna útil para garantir a segurança uma vez que ao se carregar uma nova imagem ou desenho no Captcha o mesmo será diferente do anterior. Existem diversos tipos de Captcha como, por exemplo, Captchas auditivos para deficientes visuais, Captchas que requisitam ao usuário que desenhe uma

25 25 forma na tela ou até mesmo que requisite ao usuário que interprete uma passagem de texto (Strickland, 2007). O ASP.NET não possui um controle específico para geração de um Captcha, ou seja, não há uma implementação já formalizada para um Captcha no ASP.NET. Seu desenvolvimento deriva da capacidade e objetivo do desenvolvedor. Sendo assim, a sua implementação fica a critério do desenvolvedor da aplicação que deverá gerar um código para tal fundamento. Este código será único e exclusivo do desenvolvedor já que ele diferirá dos outros existentes, desenvolvidos por terceiros. 2.4 CRIPTOGRAFIA Para uma aplicação ser considerada segura, a mesma deve manter a autenticidade, confidencialidade, integridade e disponibilidade dos dados que são enviados e recebidos. A autenticidade está associada com identificação correta de um usuário ou computador. A confidencialidade é a propriedade que garante que a informação não será acessada por qualquer entidade, aplicação ou usuário, e sim somente por aquelas autorizadas pelo proprietário da informação. Já a integridade garante que a informação manipulada mantenha todas as características originais, ou seja, garante que ela não foi manipulada durante o seu trajeto. Por fim a disponibilidade garante que a informação esteja sempre visível para uso legítimo, ou seja, todos aqueles autorizados pelo proprietário da informação (T. de Souza e S. Puttini, 2006). A criptografia pode ser utilizada para ajudar a obter estas propriedades. Esta é uma das técnicas mais importantes e seguras, pois garante a privacidade, anonimato e segurança nas transmissões de dados. Devido a sua função de manipular os dados, seguindo algoritmos determinados, ela impossibilita a leitura dos dados da informação a todos aqueles que não possuírem a chave desenvolvida unicamente para sua decifração.

26 26 A criptografia também é empregada em armazenamentos de dados em banco de dados, pois mesmo que um usuário mal intencionado consiga o acesso, ele não terá como descobrir o real valor do dado que busca, pois o mesmo estará codificado em um formato definido pelo algoritmo. Sendo assim, a criptografia garante que os dados estarão protegidos contra usuários não autorizados a acessálos. Podem-se classificar os algoritmos de criptografia em duas classes: algoritmos de chave simétrica e algoritmos de chave assimétrica ALGORITMOS DE CHAVE SIMÉTRICA No algoritmo de chave simétrica, tanto o usuário que envia a mensagem quanto o usuário que recebe a mensagem deverão ter conhecimento da chave. A mesma deverá ser compartilhada previamente entre o remetente e o destinatário. Essa chave é utilizada para cifrar (criptografar) e decifrar (descriptografar) a mensagem em questão. O seu funcionamento se baseia no seguinte cenário: o usuário A deseja enviar uma mensagem para o usuário B. Como o usuário A quer que somente o usuário B possa ler a mensagem ele utiliza a sua chave, em conjunto com o algoritmo de criptografia, para gerar uma mensagem cifrada. A partir daí ele envia a mensagem ao usuário B. Ao receber a mensagem cifrada, o usuário B utiliza o algoritmo reverso em conjunto com a chave compartilhada para decifrar a mensagem e consequentemente lê-la (Castelló e Vaz, 2001). Exemplos de algoritmos de chave simétrica no ASP.NET são o Data Encryption Standard (DES) e Triple DES, que podem ser utilizados no ASP.NET através de determinadas classes. Este assunto será abordado com detalhes no Capítulo 6.

27 ALGORITMOS DE CHAVE ASSIMÉTRICA No algoritmo de chave assimétrica são utilizadas duas chaves para efetuar a comunicação segura: chaves privada e pública. A chave privada é possuída somente por aquele usuário que irá decifrar a mensagem. Já a chave pública qualquer outro usuário poderá ter. Uma mensagem cifrada com a chave pública somente poderá ser decifrada com a chave privada correspondente. O funcionamento do algoritmo de chave assimétrica se baseia no seguinte: o usuário B deseja se comunicar com o usuário A de forma segura utilizando o algoritmo de chave assimétrica. Para isso, o usuário A gerará duas chaves, a chave privada que somente ele possuirá e a chave pública que é de conhecimento de todos. Quando o usuário B for cifrar a mensagem ele utilizará a chave pública do usuário A. Ao fazer isso ele enviará a mensagem. Ao receber a mensagem o usuário A utilizará a sua chave privada para decifrar a mensagem. Esse algoritmo é mais eficiente que o algoritmo de chave simétrica, pois somente a chave privada conseguirá decifrar a mensagem. Como a chave privada é de conhecimento somente do usuário A então somente ele poderá ler a mensagem (Castelló e Vaz, 2001) ASSINATURA DIGITAL Por fim, a assinatura digital consiste em um mecanismo de assinatura onde é garantida a integridade, autenticidade e confidencialidade da mensagem. Essa técnica é baseada na criptografia de chave assimétrica, pois são utilizadas as chaves pública e privada para assinar a mensagem. Além delas também é utilizada uma função de hashing que é uma função criptográfica responsável por gerar uma saída, chamada de hash, de tamanho fixo entre 128 e 256 bits. Um hash é um código gerado a partir do conteúdo de algum dado, de modo que uma mínima alteração no conteúdo altera completamente o código. O hash não faz parte do conteúdo, é calculado a partir dele (info, 2006). Para exemplificar o seu

28 28 funcionamento supõe-se que o remetente deseja assinar o documento que será enviado ao destinatário. Para isso, calcula-se, através da função de hashing, o hash do documento (info, 2006). O remetente assina o hash obtido cifrando-o com a sua chave privada e envia o documento original junto com a sua assinatura para o destinatário. O destinatário quando receber o documento calcula também o hash do mesmo, através da mesma função, pois é pública. Ao fazer isso o destinatário decifra, com a chave pública do remetente, a assinatura recebida e compara o valor obtido com o valor resultante do hash do documento que acabou de calcular. Se os valores forem iguais então a assinatura confere e o destinatário pode ter certeza que quem enviou o documento realmente foi o remetente. Além disso, é garantido que o documento recebido é uma cópia fiel do documento original. O ASP.NET possui classes específicas para o uso da assinatura digital, abordadas no Capítulo 6. Cada uma das técnicas apresentadas nesta seção possui a sua característica própria. Não se pode afirmar que uma técnica é melhor do que a outra para garantir a segurança, pois cada uma é utilizada para um devido fim, ou seja, com um objetivo específico diferente. A autenticação verifica a identidade do usuário garantindo a autenticidade de quem envia e recebe informações. A autorização define os recursos que o usuário ou aplicação deverá ter acesso. A validação de dados garante a entrada dos dados em seus tipos e formatos válidos. A criptografia previne que usuários não autorizados identifiquem a mensagem ou informação que está sendo transmitida e por fim a assinatura digital certifica quem realmente enviou a mensagem ou informação provendo assim a certeza da origem da informação. Para um sistema voltado para a Web ser considerado seguro o desenvolvedor deve utilizá-las em conjunto. Por exemplo, de nada adiantaria o usuário estar autenticado e conseguir acesso a recursos que somente um usuário avançado poderia possuir. Da mesma forma, não há como utilizar a assinatura digital sem a criptografia, pois a mesma é baseada nos algoritmos criptográficos. É de extrema importância que o desenvolvedor responsável pela implementação da segurança do sistema tenha conhecimento das técnicas e de suas falhas para que o mesmo saiba como aplicá-las a fim de reduzir ao máximo o acesso de pessoas não autorizadas. É importante salientar que todo e qualquer tipo

29 29 de ataque a segurança de um sistema se deve a pelo menos um dos seguintes objetivos: obter dados restritos, inserir conteúdo indevido ou destruir dados armazenados (Federal, 2004).

30 30 3 IMPLEMENTANDO A AUTENTICAÇÃO NO ASP.NET Como mencionado no Capítulo 2, a segurança no ASP.NET é implementada fazendo uso de técnicas como, autenticação, autorização, validação de dados, criptografia e assinatura digital. Neste capítulo será abordada a implementação da autenticação em um aplicativo para Web em ASP.NET. O ASP.NET é uma importante parte do.net Framework usado no desenvolvimento de aplicações Web e Web Services, que são executados no IIS, servidor Web da Microsoft. Outras tecnologias também possibilitam o desenvolvimento dessas aplicações, porém o que difere na plataforma ASP.NET é o fato de ser fortemente integrada com ferramentas de programação, acesso a dados e segurança. O ASP.NET proporciona um alto nível de consistência no desenvolvimento de aplicações. Toda aplicação Web em ASP.NET possui um arquivo de configuração, chamado de Web.config, onde são configurados os recursos que serão utilizados na aplicação. Nele pode-se configurar a string de conexão com o banco de dados, o provedor de banco de dados, permissões de acesso para usuários através da autorização, e dentre muitos outros também é possível se configurar o provedor de autenticação. O provedor de autenticação, também chamado de módulo, é responsável por garantir a autenticação da aplicação. São três módulos diferentes que podem ser utilizados para implementar a autenticação. Tais módulos possuem o código necessário para autenticar as credenciais do usuário solicitante. São eles: WindowsAuthenticationModule, quando se utiliza o provedor de autenticação Windows, FormsAuthenticateModule, para o provedor de autenticação Forms ou PassportAuthenticateModule, ao fazer uso do provedor de autenticação Passport. A autenticação Windows é o mecanismo de autenticação padrão nos aplicativos ASP.NET. A forma de autenticação é definida no arquivo de configuração

31 31 da aplicação, utilizando os elementos <system.web> e <authentication> como exemplificado na Figura 2: Figura 2: Configuração da autenticação Windows. No código da Figura 2 foi definido que a autenticação a ser utilizada será através do provedor de autenticação Windows. A autenticação Windows foi estabelecida configurando-se o atributo mode do elemento <authentication> com o valor Windows. Da mesma forma, poderia ser configurada a autenticação por provedor de autenticação Forms ou Passport, alterando o atributo mode para Forms ou Passport respectivamente, como apresentado na Figura 3: Figura 3: Opções para autenticação. As configurações citadas na Figura 3 exemplificam a forma de se definir qual a autenticação será utilizada na aplicação. Caso for preenchida a opção None, nenhuma autenticação será realizada. Nas seções seguintes será exemplificado como realizar a autenticação para cada um dos provedores de autenticação. 3.1 PROVEDOR DE AUTENTICAÇÃO WINDOWS A autenticação do Windows trata a identidade do usuário fornecida pelo servidor Web da Microsoft, Internet Information Services (IIS), como um usuário

32 32 autenticado em um aplicativo ASP.NET, ou seja, de posse da identidade do usuário a autenticação do Windows o identificará como autenticado. A identidade do usuário que o IIS fornece pode ser verificada das seguintes formas: autenticação anônima, autenticação integrada do Windows (NTLM) ou (Kerberos), autenticação básica, autenticação Digest e autenticação baseada nos certificados do cliente. A autenticação Windows é implementada no ASP.NET através do módulo WindowsAuthenticationModule que, a partir do momento que a autenticação Windows está habilitada, constrói um WindowsIdentity com base nas credenciais fornecidas pelo IIS e defini a identidade do usuário com o valor atual da propriedade User para o aplicativo (MSDN, 3). A partir do momento que é definido no arquivo de configuração (Web.config), na propriedade mode, o valor Windows, o módulo define a propriedade User, do objeto HttpContext, para o objeto IPrincipal que representa a identidade fornecida pelo IIS para a solicitação corrente. Caso a identidade fornecida pelo IIS seja anônima então o módulo usará uma identidade retornada pelo método GetAnonymous() do objeto WindowsIdentity que representa o usuário do Windows (MSDN, 4). O módulo WindowsAuthenticationModule ainda permite que o desenvolvedor forneça um objeto IPrincipal personalizado para a propriedade User do objeto HttpContext. O módulo expõe um evento chamado Authenticate, que ocorre sempre que o aplicativo autenticar a solicitação corrente (MSDN, 3). Para acessar o evento Authenticate, cria-se WindowsAuthentication_OnAuthenticate definida uma no sub-rotina arquivo chamada Global.asax da aplicação (MSDN, 7). O arquivo Global.asax é um arquivo que contém códigos para responder a eventos no nível do aplicativo e nível de sessão criados pelo ASP.NET ou pelo Módulo HTTP opcional. Reside no diretório raiz de uma aplicação ASP.NET. Em tempo de execução, o Global.asax é analisado e compilado em uma classe do.net, estrutura gerada dinamicamente derivada da classe base HttpApplication. O ASP.NET é configurado para que qualquer solicitação de URL direta para o arquivo seja rejeitada automaticamente, usuários externos não podem baixar ou exibir código dentro dela. O arquivo Global.asax é opcional, não há necessidade de criá-lo em toda aplicação. Na Figura 4 segue um exemplo de sub-rotina de acesso que poderia ser utilizada para acessar o evento Authenticate:

33 33 Figura 4: Sub-rotina de acesso ao objeto IPrincipal. Apesar do modo de autenticação Windows definir o valor da propriedade User para um objeto WindowsIdentity baseada nas credenciais fornecidas pelo IIS ele não modifica a identidade do Windows fornecida para o sistema operacional. A identidade do Windows é utilizada para verificar permissões ou para se conectar a um banco de dados. Por padrão a identidade do Windows é a identidade do processo do ASP.NET. Pode-se utilizar a identidade fornecida pelo IIS como identidade Windows, afim de que essa identidade seja utilizada para todas as tarefas que autenticam o sistema operacional, incluindo acesso a arquivos e rede. Para isso, utiliza-se o elemento <identity>, contido no elemento <system.web>, definindo sua propriedade impersonate para o valor true (MSDN, 3). Figura 5: Utilização do elemento <identity>. A Figura 5 apresenta o código para que a identidade fornecida pelo IIS seja tratada como identidade Windows e consequentemente ser utilizada para todas as tarefas que autenticam o sistema operacional.

34 PROVEDOR DE AUTENTICAÇÃO FORMS O provedor de autenticação Forms, ou provedor de autenticação de Formulários, permite ao desenvolvedor criar sua própria forma de autenticação através de formulários de login. O formulário criado será utilizado para autenticar o nome de usuário e senha de seus usuários. Sendo assim, quando uma solicitação à aplicação ocorre e essa solicitação não está autenticada como, por exemplo, um usuário não autenticado requisitando uma página protegida, a mesma é redirecionada para a página de login para que o usuário forneça suas credenciais. Ao submeter os dados, a aplicação verificará a solicitação, caso retorne como autenticada, o sistema gerará um tiquete armazenado em um cookie, contendo uma chave, que representa a identidade autenticada, para solicitações futuras. Assim, o usuário não necessitará se autenticar a cada solicitação da aplicação. Caso retorne como não autenticada, então o usuário é redirecionado a página de login para que entre com suas credenciais novamente. Com a autenticação de formulários, as informações de usuários como nome de usuário e senha são armazenados em fontes externas como arquivos, banco de dados ou no próprio arquivo de configuração da aplicação (Web.config) (MSDN, 5). Como dados importantes são armazenados nesses arquivos, os mesmos devem ser criptografados para evitar o acesso não autorizado. A autenticação Forms é implementada no ASP.NET através do módulo FormsAuthenticationModule e as informações dos formulários de autenticação podem ser acessadas pela classe FormsAuthentication. Depois de criada uma página de login o desenvolvedor cria o código responsável por autenticar as credenciais do usuário e configura a aplicação para redirecionar para a página de login os usuários não autenticados que solicitarem recursos protegidos. A configuração é feita no arquivo de configuração (Web.config).

35 35 Figura 6: Declaração do elemento <forms> na autenticação Forms. No código apresentado na Figura 6, o usuário não autenticado será redirecionado para a página Login.aspx sempre que requisitar um recurso ou URL protegida. A propriedade que garante essa função chama-se loginurl. O elemento <forms> ainda possui uma propriedade, chamada defaulturl, que especifica a URL que o usuário será redirecionado após a autenticação. Após a autenticação do usuário, a classe FormsAuthentication fornece acesso a métodos que podem ser usados para redirecionar o pedido de volta para a URL anteriormente requisitada, ou protegida. Fazendo uso do seu método RedirectFromLoginPage(), o usuário é redirecionado para o local especificado pela variável ReturnUrl contida na querystring. Para exemplificar considere a URL a seguir: Nela, o método redirecionará, após a autenticação, para a página mainpage.aspx. Caso não seja determinada a variável ReturnUrl na querystring, então o método retornará para a URL contida no atributo defaulturl do elemento <forms>. Figura 7: Método RedirectFromLoginPage() da classe FormsAuthentication. A Figura 7 apresenta a assinatura do método RedirectFromLoginPage(), que redirecionará o usuário para o local especificado. O método RedirectFromLoginPage() requisita dois parâmetros: username e createpersistentcookie. O parâmetro username deve ser preenchido com a variável que contém o nome do usuário autenticado como, por exemplo, a propriedade Text de um TextBox. O parâmetro createpersistentcookie deve ser preenchido com um valor true ou false. Quando definido como true, o método

36 36 criará um cookie para guardar a informação da autenticação, caso contrário o método executará sem criar o cookie (MSDN, 9). A classe possui ainda o método RedirectToLoginPage() que redireciona o navegador para a URL especificada no atributo loginurl. Possui um parâmetro, extraquerystring, que adiciona à URL uma querystring. O método RedirectToLoginPage() não limpa o cookie de autenticação de formulários, sendo necessário ser usado em conjunto com o método SignOut() responsável por remover o tiquete de autenticação de formulários do navegador (MSDN, 8). Figura 8: Método SignOut() em conjunto com o RedirectToLoginPage(). A Figura 8 apresenta a combinação dos códigos para remover o tiquete de autenticação do navegador e redirecionar o usuário para a URL especificada, linhas 16 e 17 respectivamente. Para tanto, devem-se definir anteriormente as credenciais válidas no arquivo de configuração (Web.config) através do elemento <user> pertencente ao elemento <credentials>. Figura 9: Definindo as credenciais do usuário. No exemplo apresentado na Figura 9, foram especificadas duas credenciais que serão utilizadas pelo método Authenticate(), da classe FormsAuthenticate, que tem como função, validar o nome de usuário e senha,

37 37 digitados no formulário de login, perante as credenciais contidas no arquivo de configuração. No elemento <credentials> o atributo passwordformat é obrigatório. O atributo define o algoritmo que será usado na criptografia da senha do usuário. Seus valores poderão ser: Clear, MD5 ou SHA1. O seu valor padrão é SHA1 e para a ocasião onde não será necessária criptografia o valor Clear é o indicado (MSDN, 6). Após a autenticação concluída e bem-sucedida, o módulo FormsAuthenticationModule define os valores da propriedade User para uma referência ao usuário autenticado. Para ler a identidade do usuário programaticamente utiliza-se o seguinte trecho de código em C# (C Sharp) apresentado na Figura 10: Figura 10: Lendo a identidade do usuário. O modulo FormsAuthenticateModule, assim como o WindowsAuthenticateModule, também permite que o desenvolvedor forneça um objeto IPrincipal personalizado para a propriedade User do objeto HttpContext. O módulo expõe o evento Authenticate, que ocorre sempre que o aplicativo autenticar a solicitação corrente. Seu acesso é através de uma sub-rotina chamada FormsAuthentication_OnAuthenticate definida também no arquivo Global.asax (MSDN, 10).

38 38 Figura 11: Sub-rotina ao objeto IPrincipal para autenticação Forms A Figura 11 apresenta uma sub-rotina de acesso ao objeto IPrincipal no arquivo Global.asax. 3.3 PROVEDOR DE AUTENTICAÇÃO PASSPORT A autenticação Passport é um serviço de autenticação centralizado fornecido pela Microsoft que apresenta um único logon e serviços de perfil para sites participantes. Esse tipo de autenticação utiliza o provedor de autenticação centralizado da Microsoft para identificar os usuários. Quando um usuário acessa um site em ASP.NET que implementa a autenticação Passport, o ASP.NET checa a máquina do usuário buscando o cookie corrente de autenticação do Passport. O cookie de autenticação do Passport mantém as credenciais e informações do usuário. Caso o ASP.NET não encontre o cookie, o usuário é redirecionado para uma página de assinatura de passaporte

39 39 chamada de Passport Sign-On. Ao entrar com seu nome de usuário e senha do Passport, o serviço autentica o usuário, armazena um cookie de autenticação na máquina e redireciona o mesmo para a página originalmente solicitada. (Tezini, 2005) A autenticação Passport permite ao usuário criar um simples nome de usuário e senha para acessar diversos sites que implementem o serviço de autenticação Passport SSI (Single Sign-In). Implementando o serviço Passport SSI o desenvolvedor não necessita programar o seu próprio mecanismo de autenticação, uma vez que esta função será realizada pelo serviço de autenticação. Após a autenticação, o serviço fornece as informações a respeito do usuário para o site de forma segura. O serviço de autenticação Passport somente autentica o usuário, ele não controla o acesso em áreas protegidas do site. Cabe ao desenvolvedor criar o seu próprio mecanismo de controle de acesso baseado no identificador de usuário Passport PUID (Passport User ID). Figura 12: Aplicação comunicando-se com o banco de dados do usuário e o Web Server do Passport. A Figura 12 ilustra o funcionamento da autenticação Passport. O cliente emite uma solicitação a um recurso ou página protegida. Neste momento o serviço verifica os cookies do cliente a procura de uma permissão de autenticação do Passport. Caso exista, autenticará o cliente, caso contrário, o servidor retornará o

40 40 código de status 302 (Found) e redirecionará o cliente para o serviço de logon do Passport (Passport Sign-On). A resposta incluirá uma URL, na sequência de caracteres da consulta enviada ao Passport Sign-On, para redirecionar o cliente de volta ao recurso ou página solicitada. O Passport Sign-On apresenta ao cliente um formulário de logon, onde deverá entrar com seu Passport ID e sua senha. Ao confirmar, é enviado um POST ao servidor de logon, utilizando SSL (Security Socket Layer). Ao receber o POST, o servidor autentica o usuário e redireciona o cliente para a URL original. A resposta contém um cookie do Passport criptografado. O cliente segue com o redirecionamento e requisita novamente o recurso protegido original, dessa vez contento o cookie do Passport. No servidor de origem o módulo PassporteAuthenticationModule detecta o cookie do Passport e faz um teste de autenticação. Caso seja bem sucedido, a solicitação é autenticada. Após esse processo as solicitações subsequentes são autenticadas no servidor de origem usando a permissão de autenticação do Passport fornecida. (TechNet) O PassportAuthenticationModule, fornece os serviços de autenticação do Passport e informações sobre perfil a partir de uma classe, denominada PassportIdentity, que possui métodos para criptografar e descriptografar permissões de autenticação Passport. O módulo fornece um evento, PassportAuthentication_OnAuthenticate, responsável por anexar o objeto IPrincipal personalizado ao contexto da aplicação a partir de uma sub-rotina específica. Para fazer uso da autenticação Passport deve-se seguir os seguintes passos: 1 - Instalar o Passport SDK (Software Development Kit). 2 - Configurar o modo de autenticação de aplicação para Passport no arquivo de configuração (Web.Config) de acordo com a Figura 13: Figura 13: Autenticação Passport.

41 41 3 Implementar o evento PassportAuthentication_OnAuthenticate para acessar o perfil do passaporte do usuário, para identificá-lo e autorizá-lo a partir de uma sub-rotina, como na Figura 14: Figura 14: Sub-rotina de acesso para autenticação Passport. 4 - Implementar um procedimento para remover os cookies de Passport da máquina do usuário como exemplificado na Figura 15. Figura 15: Evento click do botão SignOut para remover os cookies do Passport. Um quesito importante para uma autenticação é o conhecimento a respeito de manipulações de dados armazenados em cookies, uma vez que os dados do usuário e de sua sessão podem ser armazenados dessa forma. A correta

42 42 manipulação dos cookies evita que dados possam ser capturados. Sendo assim recomenda-se que os dados armazenados em cookies sejam criptografados, além do fato de manter uma data limite de expiração do cookie para que dados do usuário ou de sua sessão não permaneçam armazenados no computador onde foi realizado um acesso ou autenticação.

43 43 4 CONTROLANDO ACESSO A RECURSOS COM A AUTORIZAÇÃO Comumente aplicações voltadas para Web possuem diversos diretórios, arquivos e páginas. Muitos recursos como estes não devem ser, de acordo com a definição da aplicação, exibidos a todos os usuários. De fato, garantido o acesso, um usuário comum poderia ler, inserir, alterar ou até excluir dados, função atribuída aos administradores do sistema, caracterizando assim, uma falha na segurança. Para evitar que tal falha aconteça deve-se controlar o acesso aos recursos da aplicação através da autorização, assunto que será abordado neste capítulo. A autorização tem por finalidade determinar se a entidade solicitante deve ou não ter o acesso ao recurso solicitado. Em ASP.NET esse controle pode ser realizado de duas formas, através da autorização de URL chamada de URL authorization ou da autorização de arquivo caracterizada como File Authorization. 4.1 URL AUTHORIZATION A autorização de URL é implementada pelo módulo UrlAuthorizationModule que mapeia os usuários e regras de acesso para as URLs nas aplicações ASP.NET. O módulo pode ser usado para permitir ou negar o acesso a partes da aplicação, tipicamente diretórios, para usuários ou regras específicas. Através da autorização de URL a aplicação explicitamente nega ou permite o acesso a um determinado diretório pelo nome do usuário ou função (MSDN, 11). A autorização deve ser implementada no arquivo de configuração da aplicação, Web.config, fazendo uso do elemento <authorization>, filho do elemento <system.web>. Tal elemento possui subelementos chamados <allow> e <deny> que

44 44 possuem as finalidades de permitir ou negar o acesso respectivamente. Tais subelementos são interpretados na ordem em que aparecem na configuração (Marinho Jargas, 2004). Figura 16: Elementos da autorização. A Figura 16 apresenta os elementos, do arquivo de configuração, utilizados na autorização. Para ativar a autorização de URL, o desenvolvedor deve especificar a lista de usuários ou funções nos elementos <allow> e <deny>. As permissões concedidas ou negadas ao usuário para diretório especificado valem também para seus subdiretórios. A especificação do diretório onde será aplicada a autorização é realizada utilizando o elemento <location>. O elemento <location> possui um atributo, chamado path, que identifica o nome do diretório. Para cada diretório que necessite de permissões pode ser criado um elemento <location> diferente. A especificação do usuário poderá ser realizada através do seu nome ou da sua função configurando os atributos users, roles ou verbs dos respectivos elementos. O atributo users identifica as identidades de destino, ou contas de usuários, para o elemento em questão. Neste atributo, pode-se configurar a real função do elemento para um usuário específico, para um usuário anônimo ou para todos os usuários. Para um usuário específico, configura-se o seu nome. Para um usuário anônimo deve se utilizar, em seu valor, o caracter? e para configurar a função para todos os usuários utiliza-se o caracter *.

45 45 Figura 17: Atributo user da autorização. Na Figura 17, o elemento <allow> está concedendo acesso ao usuário Raphael ao mesmo tempo em que está negando acesso a usuários anônimos para o diretório UsersPages. Poderia ser utilizado o caracter * para permitir ou negar o acesso a todos os usuários. Figura 18: Negando acesso a todos os usuários exceto Raphael. A Figura 18 apresenta a implementação do caso onde a aplicação negará acesso a todos os usuários e permitirá acesso somente ao usuário Raphael ao diretório especificado no atributo path do elemento <location>. O atributo roles permite o desenvolvedor configurar a permissão ou acesso a um determinado grupo de usuários selecionados pela sua função. Uma função objetiva facilitar o gerenciamento das regras de acesso para um grupo de usuários, pois uma vez que diversos usuários façam parte de um grupo, ou prestem uma mesma função, basta definir as regras de acesso para aquele grupo que automaticamente todos os usuários pertencentes estarão sobre a mesma regra. Além disso, um usuário poderá estar em dois ou mais grupos de funções diferentes, por exemplo, ele poderá ter funções de um membro ao mesmo tempo em que tem funções de um administrador.

46 46 A restrição a URL é implementada através de diretórios. Sendo assim, se o objetivo é restringir o acesso, dos usuários que não pertençam à função de membro, a determinadas páginas, então se isola as mesmas em um diretório e aplica-se a regra a este diretório. Figura 19: Utilizando o atributo roles. No código apresentado na Figura 19, a aplicação permite acesso aos usuários pertencentes à função de membro (members) para o diretório MembersPages, consequentemente, esses usuários terão acesso às páginas contidas nele. Caso um usuário não autorizado tente acessar o seu conteúdo ele verá um erro ou poderá ser redirecionado a página que o desenvolvedor especificar. Para trabalhar com funções o desenvolvedor deve ser capaz de identificar os usuários do aplicativo para que possa determinar qual função ou grupo o usuário faz parte. É possível configurar o aplicativo para estabelecer a identidade do usuário de duas formas: autenticação Windows e autenticação Forms. Se o aplicativo objetiva executar em uma intranet, ou seja, uma rede interna como uma LAN, o desenvolvedor poderá identificar os usuários usando o nome da conta de domínio do Windows. Para este caso, as funções do usuário são os grupos onde o usuário faz parte no Windows. Em aplicativos implementados para executar na Internet ou em cenários onde não se possam usar contas do Windows a autenticação Forms pode ser usada para identificar o usuário. Neste caso, uma página para validar as credenciais do usuário deve ser criada. Para isso pode ser usada a classe FormsAuthentication que estabelecerá a identidade do usuário, ou simplesmente utilizar os controles de login do ASP.NET. Se o aplicativo utiliza a autenticação Windows, então o desenvolvedor poderá criar os grupos ou usuários através da ferramenta de Gerenciamento de

47 47 Computador do Windows. Para o caso da autenticação Forms, poderá configurar usuários e funções com a Ferramenta de Administração de Sites Web ASP.NET ou poderá chamar métodos gerenciadores de funções no código da aplicação (MSDN, 12). Figura 20: Métodos gerenciadores de funções. A Figura 20 apresenta um exemplo de código para gerenciar as funções de usuário. Nas linhas 16 e 17 foram criadas duas funções: members e admin, respectivamente. Na linha 19, foi utilizado o método AddUserToRole() para adicionar o usuário Edney à função admin recém criada. Nas linhas seguintes utilizou-se o método AddUsersToRole() para adicionar um array de string, contendo os nomes dos usuários, à função members. Para a utilização de funções, e consequentemente gerenciá-las, é necessária a configuração no arquivo de configuração da aplicação, apresentada na Figura 21. Figura 21: Configurando o uso de funções. Os elementos <allow> e <deny> ainda possuem o atributo verbs que define qual tipo de método HTTP, o usuário poderá utilizar. Os métodos são GET, HEAD e POST.

48 48 Figura 22: Utilizando o atributo verbs. No código apresentado na Figura 22, o método GET poderá ser utilizado por todos os usuários enquanto o método POST somente por Raphael já que o elemento <deny> está negando acesso a todos os usuários. 4.2 FILE AUTHORIZATION A autorização de arquivo, ou File Authorization, é implementada pelo módulo FileAuthorizationModule que checa uma lista de controle de acesso ACL do arquivo.aspx ou.asmx para determinar se o usuário deve ter acesso ao arquivo requerido. O arquivo dependerá do tipo de aplicação que está sendo desenvolvida. Um exemplo poderia ser um arquivo de usuários cadastrados, ou um arquivo XML contendo diversas regras definidas para grupos de usuários. As permissões ACL são verificadas pela identidade do Windows, quando a autenticação Windows está ativada, ou pela identidade do processo do ASP.NET do Windows. Quando o atributo mode do elemento <authentication> é definido como Windows, o FileAuthorizationModule, dependendo do verbo de solicitação HTTP utilizado, garante que o usuário solicitante possui permissão de leitura e gravação ao recurso (MSDN, 13). O responsável por definir se o usuário possui ou não o acesso ao arquivo é o método CheckFileAcessForUser() da classe FileAuthorizationModule. O método verifica na ACL se o usuário corrente deverá ter acesso ao arquivo solicitado. Caso o verbo de solicitação HTTP seja GET, POST ou HEAD o método verifica o acesso

49 49 de leitura para o arquivo, caso contrário, verifica se há permissão de leitura e gravação para o arquivo (MSDN, 14). O método retornará o valor true se o usuário Windows, representado pelo seu token, tem acesso ao arquivo usando o verbo HTTP especificado ou se o módulo não está definido no elemento <httpmodule> do arquivo de configuração do aplicativo, caso contrário retornará false. Para definir o módulo utiliza-se a trecho de código apresentado na Figura 23. Figura 23: Definindo o módulo no arquivo de configuração. As listas de controle de acesso ACL são definidas por padrão no arquivo de configuração da aplicação localizados no diretório \%SystemRoot %\Microsoft.NET\Framework\versão, onde versão é a versão do.net Framework instalado. O diretório é somente leitura. As ACLs podem ser definidas no diretório em si, mas incluem permissões de modificação para o grupo Usuários Avançados (MSDN, 15).

50 50 Conta do Windows Permissões Administradores Controle Total Conta do computador do ASP.NET (<servidor>\aspnet) Read and Execute IIS_WPG (<servidor>\iis_wpg) Read and Execute LOCAL SERVICE Read and Execute NETWORK SERVICE Read and Execute Usuários Avançados (<servidor>\usuários Avançados) Modify SYSTEM Controle Total Usuários (<servidor>\usuários) Read and Execute Tabela 1: Lista de controle de acesso padrão do arquivo de configuração. A Tabela 1, informa as listas de controle de acesso definidas por padrão no arquivo de configuração Web.config (MSDN, 15). As duas formas de implementação da autorização, URL authorization e File authorization, podem ser utilizadas em conjunto em uma aplicação Web. Dessa forma um usuário que possua função contida na lista de controle de acesso ACL, utilizada pela autorização por arquivo, pode ser referenciado na autorização de URL, no trecho de código onde é realizada a restrição ou permissão do usuário a um local determinado. Dessa forma o usuário será monitorado, tanto ao acesso de arquivos quanto ao acesso de URLs. 4.3 FALHA DE SEGURANÇA - CANONICALIZATION Canonicalization é o processo que determina como diversas formas de nomes equivalentes são resolvidas em um único nome padrão. O único nome padrão também é conhecido como nome canônico e faz referência a URL de um arquivo. Como exemplo, em um determinado computador, os nomes c:\pasta\index.dat, index.dat e..\..\index.dat podem todos referir ao mesmo arquivo.

51 51 Canonização ou Canonicalization é o processo que mapeia tais nomes para um nome semelhante a c:\pasta\index.dat. Quando um servidor da Web recebe uma URL, ele mapeia a solicitação para um caminho de sistema de arquivo que determina a resposta. A rotina de canonização usada para mapear a solicitação deve analisar corretamente a URL para evitar o envio ou o processamento de conteúdo inesperado (Suporte, 1). Recentemente foi descoberto uma falha de segurança relacionada ao processo de canonização no sistema de autorização do ASP.NET. A falha ocorre a partir do momento em que o usuário acessa a aplicação com uma referência a nomes de arquivos. Dependendo da referência utilizada, a lógica da aplicação poderá não identificar o arquivo e consequentemente não executar o código implementado. Se esta lógica estiver controlando a segurança do sistema, por exemplo, verificando se o usuário possui ou não permissão de acesso a um arquivo, o problema se agrava, tem-se então um acesso indevido a arquivos através do sistema. Figura 24: Restringindo acesso a webform.aspx. A Figura 24 apresenta um trecho utilizado na configuração de acesso a arquivos da autorização do ASP.NET. Como definido no código, o elemento <deny> está configurado para rejeitar o acesso a todos os usuários ao arquivo webform.aspx. Como esperado, ao realizar essa implementação em um sistema real, executá-lo e logo após tentar realizar o acesso ao arquivo, a aplicação negará a solicitação. Porém, caso o usuário tente o acesso direto ao arquivo utilizando, por exemplo, a URL a aplicação não negará o acesso e permitirá que o usuário acesse o arquivo. A URL citada corresponde a um ambiente de teste, ou seja, a aplicação chamada de

52 52 WebApplicationName, se encontra na máquina local chamada localhost, contudo o problema ocorre também em sistemas já em execução fora do ambiente de testes. Neste exemplo a falha ocorre devido à sequencia %5c, contida na URL, que representa o caracter \ de acordo com o encoding de uma URL. Como o caminho ao arquivo está definido de forma diferente o ASP.NET não consegue identificá-lo e assim o código implementado para a autorização não é executado, ou seja, um usuário desconhecido para o sistema conseguirá o acesso ao arquivo webform.aspx que, de acordo com o código, deve ser restringido a todos os usuários. Para solucionar a falha dois métodos podem ser usados: programar um evento no arquivo Global.asax ou utilizar o HttpModule do ASP.NET UTILIZANDO O ARQUIVO GLOBAL.ASAX Para evitar a falha de canonização através do arquivo Global.asax deve ser implementado o evento BeginRequest do objeto application. O evento ocorre no momento em que o ASP.NET recebe uma nova requisição antes mesmo do processo do sistema de autorização ser executado. Ao programar o evento BeginRequest para validar as URLs recebidas a aplicação ASP.NET estará protegida, evitando assim o problema de canonização (Suporte, 1). O código para a validação é apresentado na Figura 25. Figura 25: Validando as URLs com o BeginRequest

53 53 Na Figura 25, é apresentado o código para o evento BeginRequest necessário para a validação das URLs. O código verifica a existência do caracter \ dentro da URL através da função Request.Path.IndexOf( \\ ). Caso exista então o código trata a URL como inválida. Além disso, é realizada uma comparação entre o resultado do método GetFullPath() em relação ao PhysicalPath() com o próprio PhysicalPath(). Caso sejam diferentes, certamente há algum caracter especial na URL podendo gerar a falha de segurança. Neste caso, o código lançará uma HttpException com o código 404 (Not Found). Dessa forma a aplicação estará protegida da falha de segurança imposta pela canonização HTTPMODULE O módulo httpmodule foi desenvolvido pela Microsoft para proteger as aplicações ASP.NET. O módulo implementa os procedimentos de canonicidade. Para garantir a segurança da aplicação a Microsoft disponibilizou um pacote de instalação denominado VPModule.msi. O pacote instala o ficheiro Microsoft.Web.ValidatePathModule.dll no sistema. A instalação atualiza o ficheiro Machine.config com uma nova entrada de módulo HTTP em todas as versões do.net Framework instalado (Suporte, 2). Figura 26: httpmodule instalado. A Figura 26 apresenta o código que é inserido após a instalação do pacote de segurança. O programa Microsoft.Web.ValidatePathModule.dll à de instalação cache de adiciona assembly o global ficheiro GAC,

54 54 responsável por armazenar os assemblies designados para serem compartilhados por vários aplicativos no computador. Após a instalação do pacote, as aplicações ASP.NET não sofrerão com o problema de segurança introduzido pela canonização.

55 55 5 SEGURANÇA COM A VALIDAÇÃO DE DADOS Validar os dados de uma aplicação tornou-se indispensável quando o objetivo é manter a segurança e integridade dos dados. Comumente aplicada a formulários de cadastro ou login, a validação de dados objetiva garantir que os dados de entrada digitados sejam realmente os dados que deveriam ser digitados, ou seja, para um campo de , verifica se o que foi digitado é realmente um válido e não uma sequência numérica, por exemplo. Garantir que os dados de entrada estão corretos evitará o desperdício de tempo e trabalho ao mesmo tempo em que reduz custo financeiro em um eventual problema que possa ocorrer na aplicação devido a um simples erro de digitação ou até mesmo um erro proposital. Uma aplicação que não executa a devida validação dos dados, além da perda da integridade dos dados, poderá também sofrer um ataque chamado Injeção SQL. A Injeção SQL consiste em um ataque ao banco de dados da aplicação, onde o usuário digita em um campo de texto do formulário uma consulta SQL. A aplicação que não valida o dado de entrada pode permitir que a consulta seja executada, e consequentemente concluir um ataque. Como exemplo, suponha que uma aplicação necessite do CPF do usuário para exibir os seus dados cadastrados. No formulário existe um campo, TextBox, chamado de txtcpf, onde o usuário deve preencher o seu CPF. Internamente a aplicação gerará e executará a consulta logo após o usuário digitar e confirmar a inserção do número do CPF. Figura 27: Criando e executando uma consulta. O código apresentado na Figura 27 gera uma consulta SQL para a exibição dos dados cadastrados. A classe SqlDataAdapter cria um objeto

56 56 mycommand para gerar e executar a consulta SQL para o objeto de conexão myconnection. No exemplo, a intenção do desenvolvedor era que ao digitar, por exemplo, um número de CPF, o código construísse a consulta SQL como na Figura 28. Porém, caso o usuário digitasse ao invés do número do CPF uma consulta SQL, como por exemplo, ' ; DROP DATABASE clients --, a consulta construída seria a exemplificada na Figura 26. Figura 28: Código SQL correto. Figura 29: Código malicioso. A Figura 29 apresenta o código gerado composto de duas consultas SQL, a primeira corresponde ao SELECT e a segunda ao DROP. O SELECT não retornará resultado já que a sua cláusula WHERE não será atendida, pois o CPF foi considerado como vazio. Ao verificar o caracter ; (ponto e vírgula), o programa entende que é o fim da declaração SQL e passa para a segunda, o DROP. O DROP é a consulta SQL utilizada para excluir uma tabela ou banco de dados. Sendo assim, o código gerado pela aplicação executará um DROP no banco de dados CLIENTS, finalizando o ataque de Injeção SQL (MSDN, 16). Para evitar os problemas descritos acima, o desenvolvedor pode fazer uso de controles específicos para validação de dados no ASP.NET. Os controles e suas utilizações serão abordados nas seções subsequentes.

57 CONTROLES DE VALIDAÇÃO DO ASP.NET O ASP.NET possui seis controles que podem ser utilizados para validar dados de entrada. RangeValidator, São eles: RequiredFieldValidator, RegularExpressionValidator, CompareValidator, CustomValidator e ValidationSummary. Cada controle possui uma propriedade chamada IsValid que indica se o que foi digitado no campo ao qual faz referência corresponde ao que deve ser preenchido, em outras palavras ela indica se a validação ocorreu com sucesso ou não. O fluxo da validação ocorre da seguinte maneira: 1. Ocorre um Submit da página; 2. Os controles de validação da página validam os dados referentes aos controles, ou campos, a que estão associados. 3. A propriedade IsValid indica se a validação foi efetuada com sucesso. 4. Se os controles forem validados a página segue seu fluxo normal, caso contrário, aparecerão mensagens na tela indicando os campos incorretos. Nas subseções seguintes serão apresentados os controles de validação do ASP.NET juntamente com a sua forma de implementação e configuração REQUIREDFIELDVALIDATOR O controle RequiredFieldValidator especifica que o campo ao qual está associado deve ser de preenchimento obrigatório. Neste caso, se o campo não for preenchido antes da submissão da página, a validação falhará e uma mensagem, definida pelo desenvolvedor, aparecerá. As principais propriedades RequiredFieldValidator são: ControlToValidade, Text e ErrorMessage. do

58 58 Figura 30: Definição do RequiredFieldValidator. A Figura 30 exemplifica a implementação de um controle RequiredFieldValidator. Neste caso, a propriedade ControlToValidate define o controle, ou campo, que será validado, no exemplo será o controle TextBox chamado de txtname. A propriedade Text indica uma mensagem que aparecerá no local onde o controle se encontra após uma falha na validação, no caso um asterisco, enquanto a propriedade ErrorMessage apresentará o seu valor no caso da validação não ser concluída com sucesso COMPAREVALIDATOR O controle CompareValidator tem como objetivo comparar dois valores e verificar se os mesmos satisfazem as condições especificadas. O CompareValidator pode realizar comparações entre controles ou entre controles e constantes. Suas principais propriedades são: ControlToValidate, ControlToCompare, ErrorMessage, ValueToCompare, Operator e Type. Figura 31: Definição do CompareValidator. Text,

59 59 A Figura 31 apresenta o código para a configuração de um CompareValidator utilizando a validação baseada em uma constante. Neste exemplo, o controle validará o campo associado, TextBox, utilizado para a data de nascimento, chamado de txtdatanascimento, verificando se a data de nascimento corresponde às condições de validação definidas nas propriedades exemplificadas acima. No exemplo, a propriedade Text apresentará um asterisco, ao lado do CompareValidator, caso a validação falhe. ErrorMessage informará o erro ocorrido na falha da validação. A propriedade ValueToCompare define a constante que o controle deve se basear para comparar com o controle atribuído na propriedade ControlToValidate, ou seja, neste caso o controle validará se a data digitada em txtdatanascimento se encontra no formato dd/mm/aaaa, onde dd são os dias de 01 a 31, mm são os meses de 01 a 12 e aaaa a representação do ano com quatro dígitos. A propriedade Operator define o tipo de comparação, no caso foi especificado GreaterThan, que significa que o valor de txtdatanascimento terá que ser um valor maior do que o especificado em ValueToCompare. A propriedade Type define o tipo de valor que está sendo comparado e pode conter um dos valores: Currency, Date, Double, Integer ou String. Assim como na Figura 31, o controle poderia ser configurado para comparar dois outros controles, ou campos. Para isso bastaria substituir a propriedade ValueToCompare por ControlToCompare. Figura 32: Uso do ControlToCompare. Na Figura 32, o controle CompareValidator comparará o valor no TextBox, txtpass, com o valor no TextBox, txtverifypass. Neste exemplo o operador usado foi o Equal, especificando que os valores devem ser idênticos.

60 RANGEVALIDATOR O RangeValidator verifica se o valor do campo associado a ele pertence à faixa de valores configurados. Suas principais propriedades são: ControlToValidate, MinimumValue, MaximumValue, Type e Text. Figura 33: Definição do RangeValidator. A Figura 33 apresenta a configuração de um RangeValidator. No código, o controle fará a validação no TextBox, chamado de TextBox1. Verificará no TextBox1 se o valor digitado está na faixa entre um e dez, especificados pelas propriedades MinimumValue e MaximumValue respectivamente. A propriedade Type define o tipo de dado, no caso Integer. Poderia ser especificado também um dos valores: Currency, Date, Double, ou String REGULAREXPRESSIONVALIDATOR O controle RegularExpressionValidator é usado para determinar se o valor de um controle corresponde ao formato definido por uma expressão regular. Expressões regulares são padrões de caracteres que associam sequências de caracteres em um texto, em outras palavras, são uma composição de símbolos, caracteres com funções especiais, que agrupados entre si e com caracteres literais, formam uma sequência ou uma expressão. Uma expressão regular é interpretada

61 61 como uma regra, que indicará sucesso se a entrada de dados for compatível com a regra, ou seja, obedecer todas suas condições. As principais propriedades do RegularExpressionValidator são: ControlToValidate, ErrorMessage, Text e ValidationExpression. As propriedades em comum com os controles descritos acima possuem a mesma finalidade. Sua particularidade é a propriedade ValidationExpression. A propriedade ValidationExpression define uma expressão regular, que será a regra que deverá ser obedecida pelo controle definido em ControlToValidate. Suponha um exemplo onde o usuário deva digitar o CPF. No caso, o CPF deve possuir um formato xxx.xxx.xxxxx, onde cada caracter x refere-se a um número. Para realizar a validação neste caso, o desenvolvedor pode implementar o código apresentado na Figura 34: Figura 34: Definição do RegularExpressionValidator. Na Figura 34, o controle validará o valor digitado no TextBox, chamado de txtcpf, perante a regra, ou padrão, definido na propriedade ValidationExpression. No caso, o valor definido nessa propriedade é referente ao padrão xxx.xxx.xxx-xx, ou seja, qualquer entrada diferente do especificado não será validada CUSTOMVALIDATOR O CustomValidator permite ao desenvolvedor implementar o seu próprio código de validação de dados. Basicamente, o desenvolvedor cria o seu código de validação e quando a condição de validação é satisfeita o código define a propriedade IsValid como true, indicando assim que a validação foi bem sucedida. Como exemplo, suponha que um campo deva conter um número exato de dez caracteres. Para realizar a validação do campo, utiliza-se o CustomValidator fazendo

62 62 uso do seu evento OnServerValidate. Ao declarar o evento, define-se o código de validação. Figura 35: Evento OnServerValidate. A Figura 35 apresenta um código do CustomValidator. No exemplo foi definido que o controle a ser validado será o txtfield, um TextBox, e o código que será executado para a validação está no evento cvlength_servervalidate. Ao criar o evento, desenvolve-se o código da validação. Figura 36: Código de validação para o CustomValidator. O código apresentado na Figura 36 verifica se o tamanho da entrada de dados, do controle especificado pela propriedade ControlToValidate, é igual a dez. Caso seja, a propriedade IsValid é atribuída com o valor true significando que a validação foi bem sucedida, caso contrário é atribuído o valor false VALIDATIONSUMMARY O ValidationSummary, diferentemente dos controles citados nas subseções anteriores, não realiza validação. É o controle responsável por exibir ao

63 63 usuário um resumo de todas as falhas ocorridas nas validações da página. Suas principais propriedades são: ShowMessageBox, ShowSummary, DisplayMode, HeaderText e ValidationGroup. A propriedade ShowMessageBox, quando atribuída com o valor true, apresentará uma caixa de mensagem na tela com o resumo das falhas ocorridas. ShowSummary é responsável por especificar se o controle será apresentado ou omitido após as falhas na página. HeaderText define o cabeçalho do ValidationSummary. DisplayMode configura a forma que será apresentada as falhas podendo ser BulletList para uma lista não numérica, List para uma lista simples ou SingleParagraph para exibi-las em parágrafos. Por fim a propriedade ValidationGroup definirá o grupo de controles que serão relatados no resumo de falhas. Figura 37: Definição do ValidationSummary. O ValidationSummary declarado no código na Figura 37 apresentará as falhas que ocorrerem em todos os controles que fizerem parte do grupo ValidationControls. No exemplo, o resumo apresentado conteria as falhas dos controles descritos nas seções 5.1.1, 5.1.2, 5.1.3, e 5.1.5, pois o grupo onde se encontram é o mesmo atribuído ao ValidationSummary. 5.2 EXPRESSÕES REGULARES NO ASP.NET As Expressões regulares são um conjunto de símbolos e caracteres, com funções específicas, que formam um padrão ou expressão. Possuem utilidade em validações, comparações e substituições de dados. No ASP.NET as expressões regulares são utilizadas através da classe Regex que possui diversos métodos que

64 64 auxiliam na manipulação dos dados. De tais métodos podem-se citar: Escape(), Unescape(), IsMatch(), Match(), Matches(), Replace() e Split(). O método Escape() elimina um conjunto mínimo de caracteres, substituindo-os por seus códigos de escape, normalmente uma barra invertida (\). Isso instrui o mecanismo da expressão normal a interpretar esses caracteres literalmente ao invés de interpretá-los como metacaracteres. Em contra partida, o método Unescape() realiza o procedimento reverso. O Unescape() remove o caracter de escape, barra invertida introduzida pelo método Escape(), de cada caracter. O método IsMatch() é utilizado para validar uma sequência ou garantir que uma sequência está de acordo com um padrão específico. Figura 38: Utilizando Regex e IsMatch(). A Figura 38 apresenta um código de utilização da classe Regex juntamente com o seu método IsMatch(). No exemplo pode ser visto que na linha 556 foi criada uma variável do tipo string que contém a expressão regular para a validação de um CPF. Na linha logo abaixo foi instanciado um objeto da classe Regex utilizando a expressão regular criada no construtor da classe. O objeto então passa a guardar a expressão regular gerada no construtor. Ao chamar o método IsMatch(), a entrada que deverá ser comparada com a expressão guardada no objeto é enviada como parâmetro. No caso, o valor digitado no TextBox, txtcpf, será verificado. Caso o valor de entrada esteja no formato requisitado pela expressão o método IsMatch() retornará o valor true, caso contrário retornará false (MSDN, 17). O método Match() pode ser utilizado para buscar a primeira ocorrência da expressão regular na string especificada. Para determinar quando um padrão de expressão regular foi encontrado na string de entrada deve-se verificar o valor

65 65 retornado pela propriedade Sucess do objeto Match. Caso retorne true, a propriedade Value do objeto Match conterá a substring, encontrada na string de entrada, correspondente ao padrão da expressão regular definida, caso contrário a propriedade Value retornará vazia. Para encontrar substrings subsequentes deve-se chamar o método NextMatch() do objeto Match, juntamente com a coleção Groups para obtê-las, como exemplificado na Figura 39 (MSDN, 18). Figura 39: Código de exemplo do método Match(). A classe também possui o método Matches(), que ao invés de buscar somente a primeira ocorrência do padrão definido, busca todas as ocorrências dentro da string especificada.

66 66 Figura 40: Código de exemplo do método Matches(). Na Figura 40, o loop foreach verificará todas as ocorrências do padrão, pattern, na string sentence e para cada um apresentará na tela o seu valor, propriedade Value, e seu índice, propriedade Index. A classe Regex ainda possui os métodos Replace() e Split(). O método Replace() substituirá todas as substrings encontradas, que corresponderem ao padrão, com a string retornada pelo delegate MatchEvaluator.

67 67 Figura 41: Utilizando o Replace(). O exemplo da Figura 41 apresenta o código de funcionamento do Replace() que a partir de uma string original, busca as strings que correspondam ao padrão, converte o primeiro caracter de cada string para maiúscula e em seguida exibe o resultado através do comando System.Console.WriteLine(), como segue na linha 34 da Figura 41. O método Split() divide a string de entrada nas posições especificadas por uma expressão regular. Este método possui comportamentos diferentes, dependendo da versão do.net Framework, quando são utilizados vários parênteses de captura no padrão ou expressão definida. No.NET Framework 1.0 e 1.1, se não for encontrada ocorrências da string delimitada pelos parênteses de captura o texto de parênteses adicionais não são incluídos no array retornado, enquanto no.net Framework 2.0 e superiores todo o texto capturado é adicionado

68 68 ao array. Como exemplo, na Figura 42, o código apresentado utiliza dois conjuntos de parênteses de captura para extrair os elementos da data, incluindo os delimitadores de data, de uma string de data. A data está contida na variável input e o padrão contendo os parênteses de captura na variável pattern. O primeiro conjunto de parênteses da variável pattern captura o hífen, enquanto o segundo captura a barra. O código demonstra, em comentários, os diferentes comportamentos para as diferentes versões do.net Framework (MSDN, 19). Figura 42: Utilização do método Split(). Na Figura 42, os resultados apresentados em comentários variam de acordo com a versão do.net Framework. Nas versões 1.0 e 1.1 o método retorna um array contendo três elementos, o mês, o dia e o ano, enquanto na versão 2.0 e superiores, o método retorna um array com cinco elementos, o mês, a primeira barra, o dia, a segunda barra e o ano. Em ambos os exemplos as datas estão no formato, mm/dd/aaaa, onde mm representam os meses entre 01 e 12, dd os dias de 01 a 31 e aaaa o ano com quatro dígitos.

69 69 6 COMO USAR A CRIPTOGRAFIA NO ASP.NET A criptografia, como mencionado no Capítulo 2, é uma técnica responsável por manipular os dados objetivando impossibilitar a leitura dos mesmos, garantindo dessa forma, que somente os usuários que possuírem a chave correta poderão obter o seu conteúdo. Dessa forma, através da criptografia, podem-se obter as propriedades confidencialidade, integridade, autenticação e não - repudio. A confidencialidade protege a identidade ou os dados do usuário contra leitura. A integridade ajuda a proteger os dados de alterações. Autenticação garante que os dados são originados de uma pessoa específica e a propriedade não repudio evita que uma pessoa negue que enviou uma mensagem ou informação. Para atingir essas metas, o desenvolvedor poderá fazer uso de uma combinação de algoritmos e práticas, conhecidas como primitivas criptográficas, para criar um esquema de criptografia. A Tabela 2 lista os primitivos criptográficos e suas funções. Primitivas criptográficas Função Criptografia de chave Executa uma transformação nos dados para impedir a leitura de terceiros. Esse tipo simétrica de criptografia usa uma simples chave secreta compartilhada para criptografar e descriptografar dados. Criptografia de chave Executa uma transformação nos dados para impedir a leitura de terceiros. Este tipo assimétrica de criptografia usa um par de chaves pública/privada para criptografar e descriptografar os dados. Assinatura digital Ajuda a verificar a origem dados de uma pessoa específica, criando uma assinatura digital exclusiva. Esse processo também usa funções de hash. Tabela 2: Primitivos criptográficos.

70 70 Nas seções seguintes, cada primitiva criptográfica será abordada detalhadamente. 6.1 CRIPTOGRAFIA DE CHAVE SIMÉTRICA Na criptografia de chave simétrica os algoritmos implementados pelas classes do ASP.NET utilizam uma única chave para criptografar e descriptografar dados. Por este fato, a chave utilizada deve ser guardada de forma segura contra usuários não autorizados, pois uma vez que o usuário possua a chave, poderá descriptografar e criptografar novos dados aos originais, ferindo assim a propriedade de integridade. Além da chave que é utilizada, ainda é utilizado um vetor de inicialização. O vetor de inicialização objetiva impedir que um mesmo bloco de texto seja criptografado de forma idêntica para o caso do texto ser submetido à mesma chave. Os algoritmos de chave simétrica são muito rápidos e adequados na execução de transformações de criptografia em grandes fluxos de dados, porém possuem a desvantagem de que as duas partes que se comunicam devem compartilhar a chave utilizada, o que pode trazer um problema de segurança caso a mensagem com a chave seja interceptada. Comumente é usado o algoritmo de chave assimétrica para criptografar a chave, impedindo assim que a mesma seja visualizada numa eventual interceptação (MSDN, 20). O.NET Framework possui diversas classes que implementam o algoritmo de chave simétrica. DESCryptoServiceProvider, São eles: HMACSHA1, RijndaelManaged, AesManaged, RC2CryptoServiceProvider e TripleDESCryptoServiceProvider. Cada classe citada então pode ser utilizada para criptografar e descriptografar dados, cada uma utilizando um código diferente. Nas seções seguintes será exemplificada a utilização de cada classe.

71 CLASSE RIJNDAELMANAGED A classe RijndaelManaged fornece uma implementação do algoritmo de chave simétrica Rijndael. O algoritmo suporta chaves de tamanhos 128, 192, ou 256 bits. As Figuras 43, 44 e 45 apresentam o código comentado utilizado para criptografar e descriptografar dados utilizando a classe RijndaelManaged. Figura 43: Método principal do RijndaelManaged. A Figura 43 apresenta a codificação utilizada para o uso do algoritmo Rijndael, partindo do ponto onde já se tem o dado a ser criptografado, no caso, a string original. O método Main() cria uma instancia da classe RijndaelManaged, utiliza os métodos encryptstringtobytes_rm() e decryptstringfrombytes_rm() para criptografar e descriptografar o dado respectivamente e por fim mostra na tela o

72 72 dado original e o dado descriptografado. Os métodos responsáveis por criptografar e

73 73 descriptografar estão exemplificados nas Figuras 44 e 45 respectivamente.

74 74 Figura 44: Método para criptografar dados com o RijndaelManaged.

75 75 O método encryptstringtobytes_rm() recebe como parâmetro três valores, a string plaintext e os arrays de bytes Key e IV. O método começa verificando se os valores não são nulos ou se seus comprimentos são menores ou iguais a zero. Realizando esse procedimento fica garantido que os valores de entrada realmente são válidos, ou seja, possuem dados. Logo em seguida são criados o fluxo de memória, que será utilizado para criptografar o array de bytes, e a declaração do objeto RijndaelManaged. A partir deste ponto o método tenta criptografar os dados utilizando a sequência descrita na Figura 44 entre as linhas 70 e 96. Conseguindo, o código irá retornar o valor criptografado para o dado de entrada contido na string plaintext e limpará o objeto da classe RijndaelManaged, caso contrário, somente limpará o objeto e retornará o valor contido anteriormente no objeto msencrypt, ou seja, o valor null.

76 76 Figura 45: Método para descriptografar dados com o RijndaelManaged.

77 77 O método decryptstringfrombytes_rm() recebe como parâmetro três vetores de bytes, ciphertext que é o texto a ser descriptogrado, Key representando a chave e IV que é o vetor de inicialização. O método começa verificando os parâmetros para garantir que os mesmos não são nulos e que possuem comprimento maior que zero significando assim que possuem dados. Após esse procedimento, é declarado o objeto da classe RijndaelManaged, que será usado para descriptografar o dado, e a variável do tipo string, plaintext, utilizada para o armazenamento do dado após a sua decifração. A partir daí o código, através do comando try, tenta descriptografar os dados usando a sequência de código exemplificada na Figura 45. Conseguindo, o código coloca na variável plaintext o valor final e após, limpa o objeto da classe RijndaelManaged, caso contrário, somente limpa o objeto e retorna o valor nulo (MSDN, 21) CLASSE AESMANAGED A classe AesManaged fornece uma implementação do algoritmo de chave simétrica Advanced Encryption Standard (AES). O AES é essencialmente o algoritmo de chave simétrica Rijndael com um bloco de tamanho fixo e uma contagem de interação. Possui as mesmas funções que a classe RijndaelManaged mas limita o bloco a 128 bits. As Figuras 46, 47 e 48 apresentam o código que deve ser implementado para descriptografar um dado. executar os procedimentos para criptografar e

78 78 Figura 46: Método principal do AesManaged. A Figura 46 apresenta o método Main(), responsável pelo código utilizado para a criptografar e descriptografar um dado. No caso, o dado contido na string original será criptografado através do método encryptstringtobytes_aesmanaged() e armazenado na variável encrypted. Logo após, o método decryptstringfrombytes_aesmanaged() é utilizado para descriptografar o dado contido nesta variável. Por fim é mostrado na tela o dado original e o dado descriptografado. A implementação dos métodos para criptografar e descriptografar se encontram nas Figuras 47 e 48 respectivamente.

79 79 Figura 47: Método para criptografar da classe AesManaged.

80 80 Assim como na classe RijndaelManaged, o método encryptstringtobytes_aesmanaged(), apresentado na Figura 47, recebe como parâmetro três valores, a string plaintext e os arrays de bytes Key e IV. Da mesma forma, começa verificando se os valores não são nulos ou se seus comprimentos são menores ou iguais a zero garantindo então que possuem dados. Logo em seguida são criados o fluxos utilizados para criptografar o dado, o objeto AesManaged e o array de bytes que será usado para armazenar o dado criptografado. A partir deste ponto o método tenta, através do comando try, criptografar o dado utilizando a sequência descrita na Figura 47 entre as linhas 77 e 90. Conseguindo, ou seja, executando o código delimitado pelo comando, o código irá armazenar o valor criptografado no fluxo de escrita, fechará todos os fluxos e limpará o objeto da classe AesManaged, caso contrário, somente fechará os fluxos e limpará o objeto, retornando o valor nulo. Na Figura 48, é apresentado o código para descriptografar o dado.

81 81 Figura 48: Método para descriptografar da classe AesManaged.

82 82 O método decryptstringfrombytes_aesmanaged(), apresentado na Figura 48, recebe como parâmetro três vetores de bytes, chipertext que é o texto a ser descriptogrado, Key representando a chave e IV que é o vetor de inicialização. O método, da mesma forma que na classe RijndaelManaged, começa verificando os parâmetros verificando se os mesmos não são nulos e que possuem dados. Após esse procedimento, são declarados os fluxos para descriptografar o dado junto com o objeto da classe e a variável do tipo string, plaintext, utilizada para o armazenamento do dado após a sua decifração. A partir daí o código, através do comando try, tenta descriptografar os dados usando a sequência de código exemplificada na Figura 45 entre as linhas 132 e 149. Conseguindo, o código coloca na variável plaintext o valor descriptografado e após, fecha os fluxos usados limpando o objeto da classe AesManaged, caso contrário, somente fecha os fluxos, limpa o objeto e retorna o valor nulo (MSDN, 22) CLASSE HMACSHA1 HMACSHA1 é um algoritmo de hash com chave, construído a partir da função de hash SHA1 e usado como um HMAC, Hash-based Message Authentication Code. O processo do HMAC faz uma união de uma chave secreta com a mensagem ou dado, gera um hash a partir da função de hash SHA1, faz a união do hash gerado com a chave secreta novamente e então aplica a função de hash uma segunda vez. Esse processo gera uma saída de 160 bits. Um HMAC pode ser usado para determinar quando a mensagem enviada por um canal inseguro foi adulterada, desde que o remetente e o destinatário compartilhem a mesma chave secreta. O processo funciona da seguinte maneira: o remetente calcula o hash da mensagem que quer enviar e envia ambos os dados, a mensagem e a sequência hash para o destinatário como uma mensagem simples. O destinatário quando recebe a mensagem recalcula o hash e compara esse valor com o hash recebido na mensagem, que foi calculado anteriormente pelo destinatário. Se

83 83 os valores forem iguais significa que a mensagem não foi alterada e a mesma é autentica. A certeza da integridade do dado se deve ao fato de que um hash, ou sequência de bytes, para um dado sempre será o mesmo, para aquele dado, não importando quantas vezes forem aplicadas a função de hash (MSDN, 23). Os métodos da classe HMACSHA1 utilizados no processo estão exemplificados na Figura 49, 50 e 51. Figura 49: Método Main() da classe HMACSHA1. Na Figura 49 está exemplificado o método principal, Main(). Nele o código cria uma chave aleatória, a partir de um gerador de números aleatórios, que será utilizada pelo remetente e destinatário. Utilizando o método EncodeFile(), junto com a chave secreta, o método codifica o arquivo contido no array de string Fileargs[0], e cria o segundo arquivo, já codificado, Fileargs[1]. Esse procedimento seria utilizado pelo remetente. O destinatário então, utilizará o método DecodeFile(), com a mesma

84 84 chave secreta, para decodificar o arquivo criado, Fileargs[1] e consequentemente verificar se o arquivo original foi adulterado ou não. A implementação dos códigos dos métodos EncodeFile() e DecodeFile() encontram-se nas Figuras 50 e 51 respectivamente. Figura 50: Método EncodeFile() da classe HMACSHA1.

85 85 Figura 51: Método DecodeFile() da classe HMACSHA CLASSE RC2CRYPTOSERVICEPROVIDER A classe RC2CryptoServiceProvider define um objeto para acessar a implementação do provedor de serviço de criptografia CSP do algoritmo RC2. A implementação do algoritmo suporta tamanhos de chaves de 40 a 128 bits em incrementos de 8 bits. O objeto da classe RC2CryptoServiceProvider criptografa e descriptografa dados em blocos de 8 bytes e preenche o final do bloco de dado se o mesmo for menor que 8 bytes. Como resultado desse preenchimento, o tamanho do dado criptografado pode ser maior que o dado original (MSDN, 24). A Figura 52 exemplifica como criptografar e descriptografar uma string fazendo uso da classe RC2CryptoServiceProvider.

86 86 Figura 52: Método Main() da classe RC2CryptoServiceProvider.

87 87 Na Figura 52, o método Main() executa dois procedimentos, o de criptografar e o de descriptografar o dado. No caso as operações poderiam ser realizadas em locais diferentes, porém para exemplificação foram colocados no mesmo local. A primeira parte do método, correspondente as linhas 19 a 41 realiza o processo de criptografar a string original. Para isso o método cria uma instancia da classe RC2CryptoServiceProvider, obtém a chave e o vetor de inicialização, cria o objeto que fará a criptografia a partir do método CreateEncryptor() da classe RC2CryptoServiceProvider, declara os fluxos de memória e de criptografia responsáveis por armazenar o dado criptografado, converte o dado da string para um array de bytes, escreve os dados no fluxo de criptografia e por fim armazena, como um array, na variável encrypted. Neste ponto o dado está criptografado e pode ser transferido ou salvo. Neste exemplo o método executa o procedimento para descriptografar o dado que consiste em: obter um objeto que fará a descriptografia através do método CreateDecryptor() da classe RC2CryptoServiceProvider, declara os fluxos de memória e criptografia para armazenar e descriptografar o dado utilizando, no fluxo de criptografia, o objeto criado, lê os bytes descriptografados do fluxo de descriptografia e por fim mostra na tela o dado original e o dado descriptografado CLASSE DESCRYPTOSERVICEPROVIDER A classe DESCryptoServiceProvider define um objeto para acessar a versão do provedor de serviço de criptografia CSP do algoritmo Data Encryption Standard DES. Suporta chaves de até 64 bits (MSDN, 25). A classe pode ser utilizada para criptografar um dado fazendo uso do código exemplificado na Figura 53.

88 88 Figura 53: Método criptográfico da classe DESCryptoServiceProvider. O código da Figura 53 apresenta o método EncryptData() que criptografa o dado de entrada e salva o resultado no arquivo de saída. Para isso, ele cria os fluxos de arquivos responsáveis pelo armazenamento dos arquivos de entrada e saída, cria um objeto da classe DESCryptoServiceProvider, declara um fluxo de criptografia utilizando o arquivo de saída juntamente com um objeto para criptografia criado pelo método CreateEncryptor() e por fim realiza um loop para ler o arquivo de entrada, criptografá-lo e escrevê-lo no arquivo de saída. O método para descriptografar pode ser obtido da mesma forma, porém ao invés de utilizar o método CreateEncryptor(), será utilizado o CreateDecryptor(), responsável por criar um objeto para a descriptografia, juntamente com a mesma chave e o mesmo vetor de inicialização.

89 CLASSE TRIPLEDESCRYPTOSERVICEPROVIDER A classe TripleDESCryptoServiceProvider define um objeto para a versão do provedor de serviço de criptografia CSP do algoritmo TripleDES. Esse algoritmo suporta chaves de 128 a 192 bits em incrementos de 64 bits. Com ele, é possível criptografar e descriptografar dados em um arquivo ou em memória (MSDN, 26). As Figuras 54 a), 54 b) e 54 c) apresentam os códigos que devem ser implementados para criptografar e descriptografar uma string em um arquivo. Neles existem os métodos Main(), EncryptTextToFile() e DecryptTextFromFile(). O método Main() utiliza o método EncryptTextToFile() para criptografar o dado e salvá-lo em um arquivo, ao mesmo tempo em que utiliza o DecryptTextFromFile() para descriptografar o dado do arquivo. Para ambos os método sempre serão usados o mesmo vetor de inicialização e mesma chave. Figura 54 a): Código utilizando a classe TripleDESCryptoServiceProvider.

90 90 Figura 54 b): Método EncryptTextToFile(). Figura 54 c): Método DecryptTextFromFile().

91 91 Além dos códigos citados nas Figuras 54 a), 54 b) e 54 c), a classe TripleDESCryptoServiceProvider também pode criptografar e descriptografar dados em memória. Para realizar esse procedimento deve-se implementar os códigos descritos nas Figuras 55 a), 55 b) e 55 c). O procedimento é semelhante, porém ao invés de se armazenar os dados em um arquivo, os dados ficam armazenados na memória. Figura 55 a): Utilizando memória na classe TripleDESCryptoServiceProvider.

92 92 Figura 55 b): Método EncryptTextToMemory(). Figura 55 c): Método DecryptTextFromMemory().

93 CRIPTOGRAFIA DE CHAVE ASSIMÉTRICA O algoritmo de criptografia de chave assimétrica é conhecido por este nome devido ao fato de que uma chave é requerida para criptografar o dado e outra chave diferente é requerida para descriptografá-lo. O algoritmo utiliza uma chave privada, que deve ser mantida em segredo, e uma chave pública que pode ser exibida para qualquer usuário. A chave privada e a chave pública são matematicamente ligadas, ou seja, um dado que for criptografado pela chave pública somente poderá ser descriptografado pela chave privada e o dado que for assinado com a chave privada somente poderá ser verificado com a chave pública. Uma regra básica da criptografia proíbe o reuso das chaves, e ambas as chaves devem ser únicas para cada sessão de comunicação. Na prática, chaves assimétricas são geralmente de longa duração. Como exemplo, supõe-se um cenário onde dois usuários, Anderson e Edney, necessitem se comunicar através de um canal não seguro. Anderson deseja enviar uma informação a Edney e quer que somente ele tenha acesso. Sabendo da comunicação que farão, Edney utiliza um algoritmo de chave assimétrica e gera um par de chaves pública e privada. Anderson, então, requisita a chave pública de Edney. Edney envia a sua chave pública para Anderson através do canal não seguro e Anderson utiliza essa chave para criptografar a informação que deseja enviar. Anderson então envia a informação criptografada a Edney, que por sua vez utiliza a única chave que poderia descriptografá-la, a sua chave privada. Caso a chave pública de Edney fosse interceptada, no momento que foi enviada a Anderson, por um usuário não autorizado e a mensagem criptografada por Anderson também fosse interceptada em sua volta, pelo mesmo usuário, ele não teria como descobrir a informação. Essa afirmação é verdadeira, pois a única chave que pode descriptografar a informação é a chave privada, e esta não foi enviada a ninguém, somente Edney possui (MSDN, 20).

94 94 O ASP.NET implementa diversas classe que utilizam algoritmos de chave assimétrica. Suas classes mais importantes são: DSACryptoServiceProvider e RSACryptoServiceProvider e serão descritas nas subseções seguintes CLASSE DSACRYPTOSERVICEPROVIDER A classe DSACryptoServiceProvider define um objeto para acessar a implementação do provedor de serviços de criptografia CSP do algoritmo DSA. O desenvolvedor poderá utilizar a classe DSACryptoServiceProvider para criar uma assinatura digital e proteger a integridade do dado. O funcionamento da operação é o seguinte: o remetente aplica a função de hash, na mensagem que deseja enviar, para criar um message digest ou resumo da mensagem. O remetente então criptografa o message digest com a sua chave privada para criar uma assinatura pessoal. Ao receber a mensagem e a assinatura, o destinatário descriptografa a assinatura usando a chave pública do remetente para recuperar o message digest. A partir deste ponto o destinatário aplica a mesma função de hash à mensagem para obter um segundo message digest que será comparado com o primeiro, derivado da assinatura. Se ambos forem idênticos o destinatário poderá ter certeza que a mensagem não foi alterada na transmissão (MSDN, 27). Esse algoritmo suporta chaves de tamanhos que vão de 512 a 1024 bits em incrementos de 64 bits. As Figuras 56 a), 56 b) e 56 c) exemplificam os códigos utilizando a classe DSACryptoServiceProvider juntamente com a assinatura digital.

95 95 Figura 56 a): Implementação criptográfica da classe DSACryptoServiceProvider.

96 96 Figura 56 b): Método DSASignHash(). Figura 56 c): Método DSAVerifyHash().

97 CLASSE RSACRYPTOSERVICEPROVIDER A classe RSACryptoServiceProvider implementa a criptografia assimétrica usando o algoritmo RSA fornecido pelo provedor de serviço de criptografia CSP. A classe suporta chaves de tamanhos que vão de 384 a bits, em incrementos de 8 bits, se houver instalado o provedor de criptografia da Microsoft chamado Microsoft Enhanced Cryptographic Provider. Para o caso de houver instalado o Microsoft Base Cryptographic Provider, também um provedor de criptografia da Microsoft, então a classe suporta chaves de tamanhos que vão de 384 a 512 bits em incrementos de 8 bits. A classe possui uma interoperação com a API de criptografia da Microsoft CAPI. A API de criptografia, CAPI, possui um número de utilizações significativas no modelo de computação empresarial. Computação em uma escala empresarial implica um quadro mais global para a interação entre as pessoas, como o comércio de commodities internacionais, gerenciamento de estoques interestadual, e assim por diante. Dentro desse quadro muitas vezes é necessário transmitir informações sensíveis através de canais não-seguros, por exemplo, contratos de fax, de compra e venda, e assim por diante. Ao usar a API de criptografia, você garante a segurança das informações. A CAPI possui funções que permitem as aplicações criptografar e assinar dados enquanto fornece proteção para a chave privada dos usuários (MSDN, 28). Diferentemente da implementação do RSA, em CAPI não gerenciado, a classe RSACryptoServiceProvider reverte a ordem do array de bytes criptografado após a criptografia e antes da descriptografia. Por padrão o dado criptografado pela classe não pode ser descriptografado pela função de descriptografia CryptDecrypt() da CAPI e o dado criptografado pela CAPI não pode ser descriptografdo pela classe RSACryptoServiceProvider (MSDN, 29). As Figuras 57 a) e 57 b) apresentam os códigos para realizar a criptografia através da classe RSACryptoServiceProvider.

98 98 Figura 57 a): Implementação criptográfica da classe RSACryptoServiceProvider.

Forms Authentication em ASP.NET

Forms Authentication em ASP.NET Forms Authentication em ASP.NET Em muitos sites web é necessário restringir selectivamente o acesso a determinadas áreas, ou páginas, enquanto para outras páginas pode permitir-se acesso livre. ASP.NET

Leia mais

Segurança da Informação

Segurança da Informação Segurança da Informação (Extraído da apostila de Segurança da Informação do Professor Carlos C. Mello) 1. Conceito A Segurança da Informação busca reduzir os riscos de vazamentos, fraudes, erros, uso indevido,

Leia mais

3. ( ) Para evitar a contaminação de um arquivo por vírus, é suficiente salvá-lo com a opção de compactação.

3. ( ) Para evitar a contaminação de um arquivo por vírus, é suficiente salvá-lo com a opção de compactação. 1. Com relação a segurança da informação, assinale a opção correta. a) O princípio da privacidade diz respeito à garantia de que um agente não consiga negar falsamente um ato ou documento de sua autoria.

Leia mais

Criptografia e Certificação Digital

Criptografia e Certificação Digital Criptografia e Certificação Digital Conheça os nossos produtos em criptografia e certificação digital. Um deles irá atender às necessidades de sua instituição. Criptografia e Certificação Digital Conheça

Leia mais

Conceitos de Segurança em Sistemas Distribuídos

Conceitos de Segurança em Sistemas Distribuídos Conceitos de Segurança em Sistemas Distribuídos Francisco José da Silva e Silva Laboratório de Sistemas Distribuídos (LSD) Departamento de Informática / UFMA http://www.lsd.ufma.br 30 de novembro de 2011

Leia mais

SISTEMAS DISTRIBUIDOS. Prof. Marcelo de Sá Barbosa

SISTEMAS DISTRIBUIDOS. Prof. Marcelo de Sá Barbosa Prof. Marcelo de Sá Barbosa Introdução Visão geral das técnicas de segurança Algoritmos de criptografia Assinaturas digitais Criptografia na prática Introdução A necessidade de proteger a integridade e

Leia mais

67 das 88 vagas no AFRF no PR/SC 150 das 190 vagas no TRF no PR/SC 150 das 190 vagas no TRF Conquiste sua vitória ao nosso lado

67 das 88 vagas no AFRF no PR/SC 150 das 190 vagas no TRF no PR/SC 150 das 190 vagas no TRF Conquiste sua vitória ao nosso lado Carreira Policial Mais de 360 aprovados na Receita Federal em 2006 67 das 88 vagas no AFRF no PR/SC 150 das 190 vagas no TRF no PR/SC 150 das 190 vagas no TRF Conquiste sua vitória ao nosso lado Apostila

Leia mais

Protótipo de um sistema para licenciamento de aplicativos Microsoft.NET baseado em assinatura digital XML

Protótipo de um sistema para licenciamento de aplicativos Microsoft.NET baseado em assinatura digital XML Protótipo de um sistema para licenciamento de aplicativos Microsoft.NET baseado em assinatura digital XML Acadêmico: Leonardo Chagas D Ippolito Orientador: Prof. Marcel Hugo Blumenau, Dezembro de 2004

Leia mais

Criptografia de chaves públicas

Criptografia de chaves públicas Marcelo Augusto Rauh Schmitt Maio de 2001 RNP/REF/0236 Criptografia 2001 RNP de chaves públicas Criptografia Introdução Conceito É a transformação de um texto original em um texto ininteligível (texto

Leia mais

Andarta - Guia de Instalação. Guia de Instalação

Andarta - Guia de Instalação. Guia de Instalação Guia de Instalação 29 de setembro de 2010 1 Sumário Introdução... 3 Os Módulos do Andarta... 4 Instalação por módulo... 6 Módulo Andarta Server... 6 Módulo Reporter... 8 Módulo Agent... 9 Instalação individual...

Leia mais

Sistemas Distribuídos Introdução a Segurança em Sistemas Distribuídos

Sistemas Distribuídos Introdução a Segurança em Sistemas Distribuídos Sistemas Distribuídos Introdução a Segurança em Sistemas Distribuídos Departamento de Informática, UFMA Graduação em Ciência da Computação Francisco José da Silva e Silva 1 Introdução Segurança em sistemas

Leia mais

Profº. Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br

Profº. Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br Profº. Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br Uma aplicação Web pode ser considerada qualquer aplicação que esteja sendo executada no servidor Web Além das variáveis locais e globais

Leia mais

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

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões Prof. MSc. Hugo Souza Se você precisar manter informações sobre seus usuários enquanto eles navegam pelo seu site, ou até quando eles saem

Leia mais

Versão 1.0 Janeiro de 2011. Xerox Phaser 3635MFP Plataforma de interface extensível

Versão 1.0 Janeiro de 2011. Xerox Phaser 3635MFP Plataforma de interface extensível Versão 1.0 Janeiro de 2011 Xerox Phaser 3635MFP 2011 Xerox Corporation. XEROX e XEROX e Design são marcas da Xerox Corporation nos Estados Unidos e/ou em outros países. São feitas alterações periodicamente

Leia mais

www.f2b.com.br 18/04/2006 Micropagamento F2b Web Services Web rev 00

www.f2b.com.br 18/04/2006 Micropagamento F2b Web Services Web rev 00 www.f2b.com.br 18/04/2006 Micropagamento F2b Web Services Web rev 00 Controle de Revisões Micropagamento F2b Web Services/Web 18/04/2006 Revisão Data Descrição 00 17/04/2006 Emissão inicial. www.f2b.com.br

Leia mais

Segurança. Sistemas Distribuídos. ic-sod@mega.ist.utl.pt 09/05/2005 1

Segurança. Sistemas Distribuídos. ic-sod@mega.ist.utl.pt 09/05/2005 1 Segurança Sistemas Distribuídos ic-sod@mega.ist.utl.pt 1 Tópicos abordados I - Mecanismos criptográficos Cifra simétrica, cifra assimétrica, resumo (digest) Assinatura digital Geração de números aleatórios

Leia mais

WatchKey. WatchKey USB PKI Token. Versão Windows. Manual de Instalação e Operação

WatchKey. WatchKey USB PKI Token. Versão Windows. Manual de Instalação e Operação WatchKey WatchKey USB PKI Token Manual de Instalação e Operação Versão Windows Copyright 2011 Watchdata Technologies. Todos os direitos reservados. É expressamente proibido copiar e distribuir o conteúdo

Leia mais

UNIP UNIVERSIDADE PAULISTA

UNIP UNIVERSIDADE PAULISTA UNIP UNIVERSIDADE PAULISTA GERENCIAMENTO DE REDES Segurança Lógica e Física de Redes 2 Semestre de 2012 SEGURANÇA LÓGICA: Criptografia Firewall Protocolos Seguros IPSec SSL SEGURANÇA LÓGICA: Criptografia

Leia mais

Validando dados de páginas WEB

Validando dados de páginas WEB Validando dados de páginas WEB Para que validar os dados? Validar os dados informados pelo usuário garante que sua aplicação funcione corretamente e as informações contidas nela tenha algum sentido. Outro

Leia mais

Criptografia. 1. Introdução. 2. Conceitos e Terminologias. 2.1. Criptografia. 2.2. Criptoanálise e Criptologia. 2.3. Cifragem, Decifragem e Algoritmo

Criptografia. 1. Introdução. 2. Conceitos e Terminologias. 2.1. Criptografia. 2.2. Criptoanálise e Criptologia. 2.3. Cifragem, Decifragem e Algoritmo 1. Introdução O envio e o recebimento de informações são uma necessidade antiga, proveniente de centenas de anos. Nos últimos tempos, o surgimento da Internet e de tantas outras tecnologias trouxe muitas

Leia mais

Guia de administração. BlackBerry Professional Software para Microsoft Exchange. Versão: 4.1 Service pack: 4B

Guia de administração. BlackBerry Professional Software para Microsoft Exchange. Versão: 4.1 Service pack: 4B BlackBerry Professional Software para Microsoft Exchange Versão: 4.1 Service pack: 4B SWD-313211-0911044452-012 Conteúdo 1 Gerenciando contas de usuários... 7 Adicionar uma conta de usuário... 7 Adicionar

Leia mais

Instruções de operação Guia de segurança

Instruções de operação Guia de segurança Instruções de operação Guia de segurança Para um uso seguro e correto, certifique-se de ler as Informações de segurança em 'Leia isto primeiro' antes de usar o equipamento. CONTEÚDO 1. Instruções iniciais

Leia mais

Boas Práticas de Desenvolvimento Seguro

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

Leia mais

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

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

Leia mais

fonte: http://www.nit10.com.br/dicas_tutoriais_ver.php?id=68&pg=0

fonte: http://www.nit10.com.br/dicas_tutoriais_ver.php?id=68&pg=0 Entenda o que é um certificado digital SSL (OPENSSL) fonte: http://www.nit10.com.br/dicas_tutoriais_ver.php?id=68&pg=0 1. O que é "Certificado Digital"? É um documento criptografado que contém informações

Leia mais

O Windows Server 2003 proporciona novos recursos e aprimoramentos em três áreas principais:

O Windows Server 2003 proporciona novos recursos e aprimoramentos em três áreas principais: 1. Introdução Os serviços do Microsoft Internet Information Server (IIS) 6.0 com o Windows Server 2003 fornecem recursos de servidor da Web integrados, confiáveis, escaláveis, seguros e administráveis

Leia mais

Assinatura Digital de Contratos de Câmbio Banrisul Utilização dos certificados digitais para a Assinatura de Contratos de Câmbio Banrisul.

Assinatura Digital de Contratos de Câmbio Banrisul Utilização dos certificados digitais para a Assinatura de Contratos de Câmbio Banrisul. Assinatura Digital de Contratos de Câmbio Banrisul Utilização dos certificados digitais para a Assinatura de Contratos de Câmbio Banrisul. Manual Descritivo Índice 1. Introdução 1.1. Objetivo. 1.2. Escopo.

Leia mais

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

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

Leia mais

Segurança em Java. João Carlos Pinheiro. jcpinheiro@cefet-ma.br. Versão: 1.1 Última Atualização: Agosto/2005

Segurança em Java. João Carlos Pinheiro. jcpinheiro@cefet-ma.br. Versão: 1.1 Última Atualização: Agosto/2005 Segurança em Java João Carlos Pinheiro jcpinheiro@cefet-ma.br Versão: 1.1 Última Atualização: Agosto/2005 1 Objetivos Apresentar uma introdução ao suporte fornecido pela API Java para a criptografia Utilizar

Leia mais

Processo para transformar a mensagem original em uma mensagem ilegível por parte de uma pessoa não autorizada

Processo para transformar a mensagem original em uma mensagem ilegível por parte de uma pessoa não autorizada Criptografia Processo para transformar a mensagem original em uma mensagem ilegível por parte de uma pessoa não autorizada Criptografia Onde pode ser usada? Arquivos de um Computador Internet Backups Redes

Leia mais

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

SERVIDOR WEB - APACHE SERVIDOR WEB - APACHE SERVIDOR WEB - APACHE 27/02/2012 O servidor Apache é o mais bem sucedido servidor web livre. Foi criado em 1995 por Rob McCool, então funcionário do NCSA (National Center for Supercomputing Applications). Em maio de 2010, o Apache serviu

Leia mais

Uma análise dos mecanismos de segurança de redes locais sem fio e uma proposta de melhoria

Uma análise dos mecanismos de segurança de redes locais sem fio e uma proposta de melhoria Uma análise dos mecanismos de segurança de redes locais sem fio e uma proposta de melhoria Gilson Marques Silva, João Nunes Souza Faculdade de Computação Universidade Federal de Uberlândia (UFU) 38.400-902

Leia mais

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

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

Leia mais

4758 LINUX PROJECT. - Disponível para os ambientes Windows NT, Windows 2000, AIX, OS/400, z/os, e usuários de sistemas OS/390 ;

4758 LINUX PROJECT. - Disponível para os ambientes Windows NT, Windows 2000, AIX, OS/400, z/os, e usuários de sistemas OS/390 ; UNIVERSIDADE FEDERAL DO MARANHÃO CENTRO DE CIÊNCIAS EXATAS E TECNOLOGIA PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA DA ELETRICIDADE HABILITAÇÃO: CIÊNCIA DA COMPUTAÇÃO DISCIPLINA: SISTEMAS OPERACIONAIS DISTRIBUÍDOS

Leia mais

Autenticação de dois fatores no SonicOS

Autenticação de dois fatores no SonicOS Autenticação de dois fatores no SonicOS 1 Observações, cuidados e advertências OBSERVAÇÃO: uma OBSERVAÇÃO indica informações importantes que ajudam a usar seu sistema da melhor forma. CUIDADO: um CUIDADO

Leia mais

Redes de Computadores. Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com

Redes de Computadores. Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com Redes de Computadores Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com Nível de Aplicação Responsável por interagir com os níveis inferiores de uma arquitetura de protocolos de forma a disponibilizar

Leia mais

Integrated User Verification Guia de Implementação do Cliente

Integrated User Verification Guia de Implementação do Cliente Integrated User Verification Guia de Implementação do Cliente Versão 2.5 31.01.12 e-academy Inc [CONFIDENCIAL] SUMÁRIO INTRODUÇÃO... 3 FINALIDADE E PÚBLICO-ALVO... 3 SOBRE ESTE DOCUMENTO... 3 TERMOS MAIS

Leia mais

Assinatura Digital: problema

Assinatura Digital: problema Assinatura Digital Assinatura Digital Assinatura Digital: problema A autenticidade de muitos documentos, é determinada pela presença de uma assinatura autorizada. Para que os sistemas de mensagens computacionais

Leia mais

Auditoria e Segurança da Informação GSI536. Prof. Rodrigo Sanches Miani FACOM/UFU

Auditoria e Segurança da Informação GSI536. Prof. Rodrigo Sanches Miani FACOM/UFU Auditoria e Segurança da Informação GSI536 Prof. Rodrigo Sanches Miani FACOM/UFU Revisão Criptografia de chave simétrica; Criptografia de chave pública; Modelo híbrido de criptografia. Criptografia Definições

Leia mais

ADOBE FLASH PLAYER 10.3 Gerenciador de configurações locais

ADOBE FLASH PLAYER 10.3 Gerenciador de configurações locais ADOBE FLASH PLAYER 10.3 Gerenciador de configurações locais PRERELEASE 03/07/2011 Avisos legais Avisos legais Para consultar avisos legais, acesse o site http://help.adobe.com/pt_br/legalnotices/index.html.

Leia mais

19/05/2009. Módulo 1

19/05/2009. Módulo 1 ASP.NET Módulo 1 Objetivo Mostrar os conceitos fundamentais da plataforma Microsoft.Net e suas ferramentas; Apresentar os conceitos fundamentais de aplicações web e seus elementos; Demonstrar de forma

Leia mais

Perguntas e Respostas. Relatórios

Perguntas e Respostas. Relatórios Perguntas e Respostas 1. Por que o @ Work mudou? R: Pensando na satisfação dos nossos clientes para com os serviços via Web, foi realizado uma reformulação de toda estrutura do site otimizando a disponibilidade

Leia mais

Desenvolvimento de Sistema Bibliotecário Simplificado Usando PHP

Desenvolvimento de Sistema Bibliotecário Simplificado Usando PHP Desenvolvimento de Sistema Bibliotecário Simplificado Usando PHP Rafael Keller Tesser 1, Patrick Pivotto Viera 1 1 Acadêmico do Curso de Ciência da Computação Universidade Federal de Santa Maria (UFSM),

Leia mais

Guia do Usuário Administrativo Bomgar 10.2 Enterprise

Guia do Usuário Administrativo Bomgar 10.2 Enterprise Guia do Usuário Administrativo Bomgar 10.2 Enterprise Índice Introdução 2 Interface administrativa 2 Status 2 Minha conta 3 Opções 3 Equipes de suporte 4 Jumpoint 5 Jump Clients 6 Bomgar Button 6 Mensagens

Leia mais

Algoritmos Criptográficos Panorama Internacional. Prof. Dr. Paulo S. L. M. Barreto LARC/PCS/EPUSP

Algoritmos Criptográficos Panorama Internacional. Prof. Dr. Paulo S. L. M. Barreto LARC/PCS/EPUSP Algoritmos Criptográficos Panorama Internacional Prof. Dr. Paulo S. L. M. Barreto LARC/PCS/EPUSP Organização Segurança da informação: conceitos. Algoritmos criptográficos: estado-da-arte no cenário internacional.

Leia mais

FTP Protocolo de Transferência de Arquivos

FTP Protocolo de Transferência de Arquivos FTP Protocolo de Transferência de Arquivos IFSC UNIDADE DE SÃO JOSÉ CURSO TÉCNICO SUBSEQUENTE DE TELECOMUNICAÇÕES! Prof. Tomás Grimm FTP - Protocolo O protocolo FTP é o serviço padrão da Internet para

Leia mais

Acesse a página inicial do NET Antivírus + Backup : www.netcombo.com.br/antivirus. Teremos 3 opções.

Acesse a página inicial do NET Antivírus + Backup : www.netcombo.com.br/antivirus. Teremos 3 opções. Acesse a página inicial do NET Antivírus + Backup : www.netcombo.com.br/antivirus. Teremos 3 opções. Esse box destina-se ao cliente que já efetuou o seu primeiro acesso e cadastrou um login e senha. Após

Leia mais

Manual de Administração

Manual de Administração Manual de Administração Produto: n-mf Xerox Versão do produto: 4.7 Autor: Bárbara Vieira Souza Versão do documento: 1 Versão do template: Data: 04/04/01 Documento destinado a: Parceiros NDDigital, técnicos

Leia mais

Infracontrol versão 1.0

Infracontrol versão 1.0 Infracontrol versão 1.0 ¹Rafael Victória Chevarria ¹Tecnologia em Redes de Computadores - Faculdade de Tecnologia SENAC (Serviço Nacional de Aprendizagem Comercial) Rua Gonçalves Chaves 602-A Centro 96015-560

Leia mais

File Transport Protocolo - FTP. Fausto Levandoski, Marcos Vinicius Cassel, Tiago Castro de Oliveira

File Transport Protocolo - FTP. Fausto Levandoski, Marcos Vinicius Cassel, Tiago Castro de Oliveira File Transport Protocolo - FTP Fausto Levandoski, Marcos Vinicius Cassel, Tiago Castro de Oliveira Universidade do Vale do Rios dos Sinos (UNISINOS) Curso Tecnólogo em Segurança da Informação Av. Unisinos,

Leia mais

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

Prof. Roberto Franciscatto 4º Semestre - TSI - CAFW. Free Powerpoint Templates Page 1 Segurança na Web Cap. 4: Protocolos de Segurança Prof. Roberto Franciscatto 4º Semestre - TSI - CAFW Page 1 é definido como um procedimento seguro para se regular a transmissão de dados entre computadores

Leia mais

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

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

Leia mais

Instalação do IBM SPSS Modeler Server Adapter

Instalação do IBM SPSS Modeler Server Adapter Instalação do IBM SPSS Modeler Server Adapter Índice Instalação do IBM SPSS Modeler Server Adapter............... 1 Sobre a Instalação do IBM SPSS Modeler Server Adapter................ 1 Requisitos de

Leia mais

CAPÍTULO 8 Conexões de banco de dados para programadores ASP.NET

CAPÍTULO 8 Conexões de banco de dados para programadores ASP.NET CAPÍTULO 8 Conexões de banco de dados para programadores ASP.NET Para utilizar um banco de dados com um aplicativo ASP.NET, é necessário criar uma conexão de banco de dados no Macromedia Dreamweaver MX.

Leia mais

Implementar servidores de Web/FTP e DFS. Disciplina: Serviços de Redes Microsoft Professor: Fernando Santorsula fernando.santorsula@esamc.

Implementar servidores de Web/FTP e DFS. Disciplina: Serviços de Redes Microsoft Professor: Fernando Santorsula fernando.santorsula@esamc. Implementar servidores de Web/FTP e DFS Disciplina: Serviços de Redes Microsoft Professor: Fernando Santorsula fernando.santorsula@esamc.br Conteúdo programático Introdução ao protocolo HTTP Serviço web

Leia mais

4.0 SP2 (4.0.2.0) maio 2015 708P90911. Xerox FreeFlow Core Guia de Instalação: Windows 8.1 Update

4.0 SP2 (4.0.2.0) maio 2015 708P90911. Xerox FreeFlow Core Guia de Instalação: Windows 8.1 Update 4.0 SP2 (4.0.2.0) maio 2015 708P90911 2015 Xerox Corporation. Todos os direitos reservados. Xerox, Xerox com a marca figurativa e FreeFlow são marcas da Xerox Corporation nos Estados Unidos e/ou em outros

Leia mais

Companhia de Tecnologia da Informação do Estado de Minas Gerais - Prodemge. Manual do Usuário. Versão 1.1. ExpressoMG

Companhia de Tecnologia da Informação do Estado de Minas Gerais - Prodemge. Manual do Usuário. Versão 1.1. ExpressoMG Companhia de Tecnologia da Informação do Estado de Minas Gerais - Prodemge Manual do Usuário Versão 1.1 ExpressoMG 14/10/2015 Sumário 1. Apresentação... 4 1.1 Objetivos do Manual... 4 1.2 Público Alvo...

Leia mais

IBM Business Process Manager Versão 7 Release 5. Guia de Instalação do Complemento do IBM Business Process Manager para Microsoft SharePoint

IBM Business Process Manager Versão 7 Release 5. Guia de Instalação do Complemento do IBM Business Process Manager para Microsoft SharePoint IBM Business Process Manager Versão 7 Release 5 Guia de Instalação do Complemento do IBM Business Process Manager para Microsoft SharePoint ii Instalando Manuais PDF e o Centro de Informações Os manuais

Leia mais

Sistemas Distribuídos: Conceitos e Projeto Introdução a Criptografia e Criptografia Simétrica

Sistemas Distribuídos: Conceitos e Projeto Introdução a Criptografia e Criptografia Simétrica Sistemas Distribuídos: Conceitos e Projeto Introdução a Criptografia e Criptografia Simétrica Francisco José da Silva e Silva Laboratório de Sistemas Distribuídos (LSD) Departamento de Informática / UFMA

Leia mais

MANUAL DO PERSUS OPERADORAS MÓDULO DE GESTÃO DE CONTAS ANS Agência Nacional de Saúde Suplementar

MANUAL DO PERSUS OPERADORAS MÓDULO DE GESTÃO DE CONTAS ANS Agência Nacional de Saúde Suplementar MANUAL DO PERSUS OPERADORAS MÓDULO DE GESTÃO DE CONTAS ANS Agência Nacional de Saúde Suplementar MANUAL DO PERSUS - OPERADORAS MÓDULO DE GESTÃO DE CONTAS Índice 1. INTRODUÇÃO...5 2. MÓDULO DE GESTÃO DE

Leia mais

GLOSSÁRIO. ActiveX Controls. É essencialmente uma interface usada para entrada e saída de dados para uma aplicação.

GLOSSÁRIO. ActiveX Controls. É essencialmente uma interface usada para entrada e saída de dados para uma aplicação. GLOSSÁRIO Este glossário contém termos e siglas utilizados para Internet. Este material foi compilado de trabalhos publicados por Plewe (1998), Enzer (2000) e outros manuais e referências localizadas na

Leia mais

1- ASP.NET - HTML Server Controls

1- ASP.NET - HTML Server Controls 1- ASP.NET - HTML Server Controls Os controles de servidor - Server Controls - HTML são tags HTML padrão, com exceção de possuirem o atributo : runat="server". Vejamos um código que ilustra isto: O atributo

Leia mais

Estamos seguros mesmo?

Estamos seguros mesmo? Grupo de Resposta a Incidentes de Segurança GRIS Departamento de Ciência da Computação Universidade Federal do Rio de Janeiro Segurança em WebMessengers: Meebo Estamos seguros mesmo? Por: Manoel Fernando

Leia mais

TRABALHO BIBLIOTECA MD5

TRABALHO BIBLIOTECA MD5 FACULDADE DE TECNOLOGIA SENAC PELOTAS TRABALHO BIBLIOTECA MD5 Linguagens de Programação Eduardo Orestes Brum Análise e Desenvolvimento de Sistemas - 2013 Sumário 1 Introdução 31 2 Criptografia MD5 4 2.

Leia mais

ASP.NET 2.0 - Visual Studio 2005 (Whidbey) Ramon Durães

ASP.NET 2.0 - Visual Studio 2005 (Whidbey) Ramon Durães ASP.NET 2.0 - Visual Studio 2005 (Whidbey) Ramon Durães O ASP.NET que é a camada de desenvolvimento de aplicações web da plataforma.net vem agradando em muito os desenvolvedores de todo o mundo desde o

Leia mais

Exercícios da Parte II: Segurança da Informação Walter Cunha PSI

Exercícios da Parte II: Segurança da Informação Walter Cunha PSI Exercícios da Parte II: Segurança da Informação Walter Cunha PSI 1. (CESGRANRIO/Analista BNDES 2008) NÃO é uma boa prática de uma política de segurança: (a). difundir o cuidado com a segurança. (b). definir

Leia mais

CA Nimsoft Monitor. Guia do Probe Monitoramento de resposta do ponto de extremidade do URL. url_response série 4.1

CA Nimsoft Monitor. Guia do Probe Monitoramento de resposta do ponto de extremidade do URL. url_response série 4.1 CA Nimsoft Monitor Guia do Probe Monitoramento de resposta do ponto de extremidade do URL url_response série 4.1 Aviso de copyright do CA Nimsoft Monitor Este sistema de ajuda online (o Sistema ) destina-se

Leia mais

CERTIFICAÇÃO DIGITAL

CERTIFICAÇÃO DIGITAL Autenticidade Digital CERTIFICAÇÃO DIGITAL Certificação Digital 1 Políticas de Segurança Regras que baseiam toda a confiança em um determinado sistema; Dizem o que precisamos e o que não precisamos proteger;

Leia mais

Aplicação de criptografia de dados para clientes Owncloud baseada em certificados ICPEdu

Aplicação de criptografia de dados para clientes Owncloud baseada em certificados ICPEdu Aplicação de criptografia de dados para clientes Owncloud baseada em certificados ICPEdu Vitor Hugo Galhardo Moia Marco Aurélio Amaral Henriques {vhgmoia, marco}@dca.fee.unicamp.br Universidade Estadual

Leia mais

TECNOLOGIA WEB. Segurança na Internet Aula 4. Profa. Rosemary Melo

TECNOLOGIA WEB. Segurança na Internet Aula 4. Profa. Rosemary Melo TECNOLOGIA WEB Segurança na Internet Aula 4 Profa. Rosemary Melo Segurança na Internet A evolução da internet veio acompanhada de problemas de relacionados a segurança. Exemplo de alguns casos de falta

Leia mais

Textos Legais. TL Internet. Legislativa. Manual de Implantação

Textos Legais. TL Internet. Legislativa. Manual de Implantação Textos Legais TL Internet Legislativa Manual de Implantação Copyright GOVERNANÇABRASIL 2012 PRONIM TL INTERNET SUMÁRIO 1. REQUISITOS MÍNIMOS DE SISTEMA... 4 2. INSTALAÇÃO... 4 2.1. INSTALAÇÃO DO IIS 7.0...

Leia mais

ASP.NET. Guia do Desenvolvedor. Felipe Cembranelli. Novatec Editora. www.novateceditora.com.br

ASP.NET. Guia do Desenvolvedor. Felipe Cembranelli. Novatec Editora. www.novateceditora.com.br ASP.NET Guia do Desenvolvedor Felipe Cembranelli Novatec Editora www.novateceditora.com.br 1 Introdução à plataforma.net A plataforma Microsoft.NET.NET é uma nova plataforma de software para desenvolvimento

Leia mais

Manual de utilização do STA Web

Manual de utilização do STA Web Sistema de Transferência de Arquivos Manual de utilização do STA Web Versão 1.1.7 Sumário 1 Introdução... 3 2 Segurança... 3 2.1 Autorização de uso... 3 2.2 Acesso em homologação... 3 2.3 Tráfego seguro...

Leia mais

Manual do KWallet. George Staikos Lauri Watts Desenvolvedor: George Staikos Tradução: Marcus Gama Tradução: André Marcelo Alvarenga

Manual do KWallet. George Staikos Lauri Watts Desenvolvedor: George Staikos Tradução: Marcus Gama Tradução: André Marcelo Alvarenga George Staikos Lauri Watts Desenvolvedor: George Staikos Tradução: Marcus Gama Tradução: André Marcelo Alvarenga 2 Conteúdo 1 Introdução 5 1.1 Criar uma carteira...................................... 5

Leia mais

Instalação, configuração e manual

Instalação, configuração e manual Cardápio Moura Instalação, configuração e manual Conteúdo Instalação... 4 Requisitos mínimos... 4 Windows 8... 5 Instalação do IIS no Windows 8... 5 Configuração do IIS no WINDOWS 8... 15 Windows 7...

Leia mais

João Bosco Beraldo - 014 9726-4389 jberaldo@bcinfo.com.br. José F. F. de Camargo - 14 8112-1001 jffcamargo@bcinfo.com.br

João Bosco Beraldo - 014 9726-4389 jberaldo@bcinfo.com.br. José F. F. de Camargo - 14 8112-1001 jffcamargo@bcinfo.com.br João Bosco Beraldo - 014 9726-4389 jberaldo@bcinfo.com.br José F. F. de Camargo - 14 8112-1001 jffcamargo@bcinfo.com.br BCInfo Consultoria e Informática 14 3882-8276 WWW.BCINFO.COM.BR Princípios básicos

Leia mais

Vamos iniciar a nossa exploração do HTTP baixando um arquivo em HTML simples - bastante pequeno, que não contém objetos incluídos.

Vamos iniciar a nossa exploração do HTTP baixando um arquivo em HTML simples - bastante pequeno, que não contém objetos incluídos. Wireshark Lab: HTTP Versão 1.1 2005 KUROSE, J.F & ROSS, K. W. Todos os direitos reservados 2008 BATISTA, O. M. N. Tradução e adaptação para Wireshark. Tendo molhado os nossos pés com o Wireshark no laboratório

Leia mais

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

TCP/IP TCP UDP IP HTTP HTTPS FTP TFTP TELNET POP3 IMAP SMTP SNMP DHCP TCP/IP TCP UDP IP HTTP HTTPS FTP TFTP TELNET POP3 IMAP SMTP SNMP DHCP HTTP (Hypertext Transfer Protocol ) Protocolo usado na Internet para transferir as páginas da WWW (WEB). HTTPS (HyperText Transfer

Leia mais

Recomendações de Segurança para Desenvolvimento de Aplicações Web

Recomendações de Segurança para Desenvolvimento de Aplicações Web Recomendações de Segurança para Desenvolvimento de Aplicações Web Índice 1. INTRODUÇÃO...3 1.1 CONTROLE DE VERSÃO...3 1.2 OBJETIVO...3 1.3 PÚBLICO - ALVO...4 2 VULNERABILIDADES COMUNS...4 2.1 INJEÇÃO DE

Leia mais

Servidor IIS. Sorayachristiane.blogspot.com

Servidor IIS. Sorayachristiane.blogspot.com Servidor IIS Servidor IIS IIS Serviço de informação de Internet; É um servidor que permite hospedar um ou vários sites web no mesmo computador e cria uma distribuição de arquivos utilizando o protocolo

Leia mais

World Wide Web e Aplicações

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

Leia mais

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

TCP/IP TCP UDP IP HTTP HTTPS FTP TFTP TELNET POP3 IMAP SMTP SNMP DHCP TCP/IP TCP UDP IP HTTP HTTPS FTP TFTP TELNET POP3 IMAP SMTP SNMP DHCP HTTP (Hypertext Transfer Protocol ) Protocolo usado na Internet para transferir as páginas da WWW (WEB). HTTPS (HyperText Transfer

Leia mais

TEORIA GERAL DE SISTEMAS

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

Leia mais

1 SQL Injection A consulta normal SQL seria:

1 SQL Injection A consulta normal SQL seria: HTTP Testando aplicação Web. Pegaremos dois tipos de ataques dentre os top 10 do OWASP 1 SQL Injection A consulta normal SQL seria: SELECT * FROM Users WHERE Username='$username' AND Password='$password'

Leia mais

Oficial de Justiça 2014. Informática Questões AULA 3

Oficial de Justiça 2014. Informática Questões AULA 3 Oficial de Justiça 2014 Informática Questões AULA 3 - Conceitos básicos de Certificação Digital - Sistema Operacional: Microsoft Windows 7 Professional (32 e 64-bits) operações com arquivos; configurações;

Leia mais

M3D4 - Certificados Digitais Aula 2 Certificado Digital e suas aplicações

M3D4 - Certificados Digitais Aula 2 Certificado Digital e suas aplicações M3D4 - Certificados Digitais Aula 2 Certificado Digital e suas aplicações Prof. Fernando Augusto Teixeira 1 2 Agenda da Disciplina Certificado Digital e suas aplicações Segurança Criptografia Simétrica

Leia mais

Segurança Internet. Fernando Albuquerque. fernando@cic.unb.br www.cic.unb.br/docentes/fernando (061) 273-3589

Segurança Internet. Fernando Albuquerque. fernando@cic.unb.br www.cic.unb.br/docentes/fernando (061) 273-3589 Segurança Internet Fernando Albuquerque fernando@cic.unb.br www.cic.unb.br/docentes/fernando (061) 273-3589 Tópicos Introdução Autenticação Controle da configuração Registro dos acessos Firewalls Backups

Leia mais

Manual de Transferência de Arquivos

Manual de Transferência de Arquivos O Manual de Transferência de Arquivos apresenta a ferramenta WebEDI que será utilizada entre FGC/IMS e as Instituições Financeiras para troca de arquivos. Manual de Transferência de Arquivos WebEDI Versão

Leia mais

STCPSigner. Versão 4.0.0

STCPSigner. Versão 4.0.0 Versão 4.0.0 Conteúdo O que é o STCPSigner? 3 Arquitetura 4 Características Gerais 5 Fluxo de Assinatura 5 Fluxo da Validação 5 Fluxo de Criptografia 6 Fluxo de Decriptografia 7 Requisitos de software

Leia mais

www.projetoderedes.com.br Gestão da Segurança da Informação Professor: Maurício AULA 08 Protocolos de Segurança

www.projetoderedes.com.br Gestão da Segurança da Informação Professor: Maurício AULA 08 Protocolos de Segurança www.projetoderedes.com.br Gestão da Segurança da Informação Professor: Maurício AULA 08 Protocolos de Segurança Protocolos de Segurança A criptografia resolve os problemas envolvendo a autenticação, integridade

Leia mais

Laboratório de Redes de Computadores e Sistemas Operacionais

Laboratório de Redes de Computadores e Sistemas Operacionais Laboratório de Redes de Computadores e Sistemas Operacionais Serviços de Servidor TCP/IP Fabricio Breve Internet Information Services (IIS) Conjunto de serviços baseados em TCP/IP executados em um mesmo

Leia mais

Sistema de Ordens de Serviço HDA Soluções em Informática

Sistema de Ordens de Serviço HDA Soluções em Informática UNIVERSIDADE CATÓLICA DE PELOTAS CENTRO POLITÉCNICO Curso Superior de Graduação em ANÁLISE E DESENVOLVIMENTO DE SISTEMAS Sistema de Ordens de Serviço HDA Soluções em Informática Por AUGUSTO CARRICONDE

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Segurança em Faculdades SENAC Análise e Desenvolvimento de Sistemas 1 de agosto de 2009 Motivação Segurança em A maioria é causada pelo ser humano e intencional Inicialmente os hackers eram adolescentes

Leia mais

Aplicativo da Manifestação do Destinatário. Manual

Aplicativo da Manifestação do Destinatário. Manual Aplicativo da Manifestação do Destinatário Manual Novembro de 2012 1 Sumário 1 Aplicativo de Manifestação do Destinatário...4 2 Iniciando o aplicativo...4 3 Menus...5 3.1 Manifestação Destinatário...5

Leia mais

Configuração de um servidor SSH

Configuração de um servidor SSH Configuração de um servidor SSH Disciplina: Serviços de Rede Campus Cachoeiro Curso Técnico em Informática SSH SSH(Secure Shell) é um padrão para comunicação e acesso remoto a máquinas Linux de forma segura,

Leia mais

Tema 4a A Segurança na Internet

Tema 4a A Segurança na Internet Tecnologias de Informação Tema 4a A Segurança na Internet 1 Segurança na Internet Segurança Ponto de Vista da Empresa Ponto de vista do utilizador A quem Interessa? Proxy Firewall SSL SET Mecanismos 2

Leia mais

EIMOBILE INSTITUIÇÕES DE ENSINO MOBILE

EIMOBILE INSTITUIÇÕES DE ENSINO MOBILE UNIVERSIDADE CATÓLICA DE PELOTAS CENTRO POLITÉCNICO TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS EIMOBILE INSTITUIÇÕES DE ENSINO MOBILE por Miguel Aguiar Barbosa Trabalho de curso II submetido como

Leia mais

EDITORA FERREIRA MP/RJ_EXERCÍCIOS 01

EDITORA FERREIRA MP/RJ_EXERCÍCIOS 01 EDITORA FERREIRA MP/RJ NCE EXERCÍCIOS 01 GABARITO COMENTADO 01 Ao se arrastar um arquivo da pasta C:\DADOS para a pasta D:\TEXTOS utilizando se o botão esquerdo do mouse no Windows Explorer: (A) o arquivo

Leia mais

Introdução ao C# . Visão geral do.net Framework

Introdução ao C# . Visão geral do.net Framework Introdução ao C# Microsoft.NET (comumente conhecido por.net Framework - em inglês: dotnet) é uma iniciativa da empresa Microsoft, que visa uma plataforma única para desenvolvimento e execução de sistemas

Leia mais