Login:

iMasters | Por uma internet mais criativa e dinâmica

Feeds

ASP.NET

Feed da seção ASP.NET

Newsletter de ASP.NET


Terça-feira, 04/12/2007 - 09:10 - Por Thomas Alexander Semple
Seções relacionadas:

Implementando Chave de Segurança Web com IHttpModule

Olá amigos!

Neste artigo vou mostrar como criar uma proteção baseada em licenças para distribuição de sistemas via web, implementando o IHttpModule. Vamos supor que você queira fazer um sistema web, para ser ativado a partir de uma chave, similar a chave de ativação do Windows. Caso a chave esteja incorreta, será exibida uma mensagem em todas as páginas web, conforme a figura abaixo.

Imagem de exemplo de mensagem de ativaçãoImagem de exemplo de mensagem de ativaçãoImagem de exemplo de mensagem de ativação

O IHttpModule

O IHttpModule é o módulo Http chamado sempre que houver uma requisição em seu sistema Web. O IHttpModule é geralmente utilizado para implementar uma camada de Segurança, Log de acesso ou cabeçalhos/rodapés personalizados. Neste artigo vou exibir uma mensagem de ativação de licença, mas poderíamos personalizar para exibir um cabeçalho e rodapé similar ao do Imasters, sem utilizar a master.page.

Pré-requisitos

  • Este artigo foi montado nas configurações abaixo. Não foi testado em outros ambientes.
  • Framework ASP.NET 2.0 com VB.net
  • Visual Studio 2005.

Mãos a obra

Crie uma novo site web no Visual Studio, em seguida, crie a pasta App_Code.

Crie agora um arquivo "Class" chamado protecao.vb.

Vamos marcar que estamos implementando o módulo IHttpModule.

Public Class protecao
Implements IHttpModule

Após digitarmos "Implements IHttpModule" e apertarmos "enter" será automaticamente criado no Visual Studio os métodos Init e Dispose.

Mensagem de Ativação

Agora, vamos escrever a mensagem que aparecerá caso o usuário não tenha a licença correta de uso da sua aplicação web.

Mensagem de ativaçãoMensagem de ativaçãoMensagem de ativação

Nesta função abaixo você pode configurar a sua mensagem de licença. Ao invés da mensagem de licença, você pode implementar um rodapé ou cabeçalho personalizado para seu site por exemplo.

    Private Function mensagemlicenca() As String
        Dim sMsg As String = String.Empty

        sMsg = "<div style=""display: block; padding: 10px; border: solid #ff0000 5px; " & _
                "background-color: #cfcfcf; font-weight: bold; text-align: center; z-index: 10000; " & _
                "position: absolute; top: 50px; " & _
                "font-family: verdana; font-size: 15px; ""> " & _
                "Este site é shareware e não possuí uma licença de operação. " & _
                " </div>"

        Return sMsg
    End Function

Recomendo colocar o estilo direto na div neste caso, e não em um CSS, pois o usuário poderia ocultar a div facilmente no CSS com display: none; Recomendo também não colocar id nem class nesta div para não ser possível ocultar a div via o arquivo css do site!

Código de Validação

Após criada a mensagem, vamos criar a nossa lógica de ativação do sistema. Nesta função eu chamo a chave de ativação do sistema direto do web.config. Você poderia implementar de diversas outras formas, como lendo um arquivo .lic (texto), ou verificando o domínio de requisição através de um webservice, entre muito outros. Estou neste caso fazendo da forma mais simples para que seja de fácil entendimento.

 Private Sub ativarlicenca(ByVal sender As Object, ByVal e As EventArgs)

        Dim oApp As HttpApplication = DirectCast(sender, HttpApplication)

        ' Recupero a chave do meu web.config
        Dim sMinhaChave As String = System.Configuration.ConfigurationManager.AppSettings("licenca").ToString

      If oApp.Context.Response.ContentType.ToLower() = "text/html" Then

            ' !!! Aqui você pode fazer uma validação mais apurada.
            ' !!! usando algum algorítimo seu, criptografia...
            If String.Compare(sMinhaChave, "QRFFD-1090S-ERDFV-CSARE-000010") <> 0 Then

                ' Exibo a mensagem da minha função de HTML
                oApp.Context.Response.Write(mensagemlicenca)

            End If
        End If
    End Sub

Método Init

Após criada a nossa função de ativação, só nos resta chama-la na inicialização de cada requisição Http. Para isto eu adiciono um Handler endereçado para a nossa sub ativarLicenca.


    ''' <summary>
    ''' Inicialização do IHttpModule
    ''' </summary>
    ''' <param name="context"></param>
    ''' <remarks></remarks>
    Public Sub Init(ByVal context As System.Web.HttpApplication) Implements System.Web.IHttpModule.Init
        AddHandler context.PostRequestHandlerExecute, AddressOf ativarlicenca
    End Sub

    ''' <summary>
    ''' Obrigatório para implementar IHttpModule
    ''' </summary>
    ''' <remarks></remarks>
    Public Sub Dispose() Implements System.Web.IHttpModule.Dispose

    End Sub

Configurando o web.config.

Após a nossa classe estar pronta, temos que configurar o web.config para que ele possa chamar a nossa proteção.

Na tag "Configuration" ? appSettings devemos criar a nossa chave de licença.

  <appSettings>
    <!-- 
    Coloquei o código abaixo para a mensagem sumir!
    Código Correto : value="QRFFD-1090S-ERDFV-CSARE-000010"
    -->
    <add key="licenca" value="ERRADO-QRFFD-1090S-ERDFV-CSARE-000010"/>
  </appSettings>

A nossa chave correta é: QRFFD-1090S-ERDFV-CSARE-000010, coloquei um "Errado-" para que você possa ver a mensagem de licença quando executar o seu asp.net.

Em seguida devemos configurar o HttpModule, para nossa chave de proteção

    <httpModules>
      <add name="protecao" type="protecao" />
    </httpModules>

Observações

No seu sistema, você pode criar uma segurança que obrigue o responsável pela instalação do sistema a configurar o httpModule, utilizando por exemplo uma variável session que é lida por outros arquivos chaves de sua aplicação. Caso o valor da variável não exista, você pode não executar algumas rotinas vitais para o seu sistema. Assim adquirir a licença para a ser obrigatório para o uso do sistema.

Recomendo também colocar a nossa classe proteção.vc em um Projeto de classe separado, para ser compilado com obfuscador, tornando o seu sistema ainda mais seguro. Por fim, como sabemos, no mundo do software nenhuma segurança é 100% impenetrável. O que podemos fazer, e nos aproximar cada vez mais do ideal.

Por hoje é só amigos. Nos próximos artigos mostrarei como criar um sistema de log, utilizando também o Httpmodule, e como gerar arquivos .ZIP / Tar em tempo de execução.

Clique aqui para dar download no projeto de exemplo.

Forte Abraço.

Todos os artigos de Thomas Alexander Semple

0 comentários publicados

Poste um comentário


Os textos publicados neste espaço são de responsabilidade única de seus autores (colunistas e leitores) e podem não expressar necessariamente a opinião do iMasters.

Sobre o autor

Thomas Alexander Semple é engenheiro eletrônico com ênfase em telecomunicações e é líder de projetos da T4W. Com mais de 10 anos de experiência, participa de projetos para empresas dos mais diversos segmentos. A T4W (www.t4w.com.br) é uma empresa de tecnologia onde sua área de desenvolvimento vem atendendo empresas de médio e grande porte em projetos corporativos e especiais. Thomas A. Semple também escreve periodicamente para as revistas .Net Magazine e Web Mobile.


Indique para um amigo

captcha

TI SHOP Produtos iMasters

  • Lançamento: CD-ROM Treinamento Aplicado de SQL - Lançamento! Treinamento Aplicado de SQL - Aprenda a trabalhar com SQL com bancos de dados Oracle e SQL Server. São mais de 100 tópicos explicados por Mauro Pichilliani, um articulistas mais lidos do iMasters. Aproveite! Apenas R$ 69,90 no TI SHOP.
  • Lançamento: Livro iMasters "O Encontro de 2 Mundos"- Este livro conta com 56 crônicas de profissionais mais admirados e influentes do mercado brasileiro de Internet. Aproveite o preço especial para leitores do iMasters. Apenas R$ 40,00 e envio imediato!
  • DVD Curso Completo de Photoshop - Do conceito à finalização Lançamento! Curso Completo de Photoshop, em DVD, com mais de 230 aulas dividas em 4 módulos: conceito, básico, avançado e finalização. Apenas R$ 69,50 no TI SHOP - Frete com 50% de desconto
  • DVD Javascript Starter - Curso Completo Com mais de 9 horas de vídeo-aulas, é um curso completo sobre Javascript. Ideal para quem deseja aprender a linguagem. Apenas R$ 64,90 no TI SHOP - Frete com 50% de desconto!

2001 - iMasters FFPA Informática Ltda - Todos os direitos reservados.