- Implementando a segurança
Conteúdo
Introdução
São tantos as referências e os textos abordando a segurança para a base de dados relacionais que certamente parecerei redundante ao tratar aqui deste assunto, tentarei então fazer uma abordagem mais prática com exemplos práticos. Inicialmente não havia tanta preocupação com a segurança , era mais importante como os sistemas trabalhavam que sua interação com o ambiente e o usuário. Este panorama veio se alterando, e com o explosão da Internet e a quantidade de informação que esta disponível espalhada pelos servidores pelo mundo, hoje não pode mais ser negligenciada.
Naturalmente você deve pensar em proteger seus dados , seu código e suas informações quando realmente isto for necessário e haverá ocasiões em que isto não fará sentido, por isto o bom senso na análise de cada situação deve nortear em como você deve agir e em qual nível de segurança você deve implementar.
Inicialmente iremos falar dos níveis de segurança, se é que assim podem ser chamados, mais simples e que fornecem apenas uma maneira de controlar quem está acessando o sistema.
Antes de iniciar vamos deixar bem claro que estaremos tratando principalmente da base de dados padrão MS Access e usaremos para isto , quando possível a linguagem Visual Basic versão 5.0.
Uma simples janela de Logon
A forma mais simples de segurança que você pode usar é uma janela de logon que peça o nome e senha para o usuário que queira acessar o seu sistema, pode parecer brincadeira mas para certos casos isto é o suficiente; na verdade você pode utilizá-la apenas como mais uma barreira , entre outras , de acesso ao sistema . Vemos abaixo a janela de logon do sistema , ela foi construida usando o Visual Basic 5.0.
Esta deverá ser a primeira janela de sua aplicação de forma que somente os usuários autorizados poderão acessar o sistema. Nela temos os seguintes controles: 1 Form , 2 TextBox , 2 labels e 2 botões de comandos : command1(0) e command1(1).
O usuário irá fornecer o nome e a senha e a seguir deverá clicar no botão Entrar , o sistema irá então checar se o usuário e a senha informada tem permissão de acessar o sistema.
Vejamos a seguir o código associado ao botão Entrar.
Private Sub Command1_Click(Index As Integer)
Dim db As Database
Dim rs As Recordset
On erro GoTo trata_erro
Select Case Index
Case 0 'botao sair
Unload Me
Case 1 'botao entrar
If txtusuario.Text = "" Or txtsenha.Text = "" Then
MsgBox "Informe o Nome/Senha do usuário ! "
Exit Sub
End If
Call Codigo_Chave(txtsenha.Text)
Set db = DBEngine.Workspaces(0).OpenDatabase(App.Path & "\Secur.mdb")
Set rs = db.OpenRecordset("senhas", dbOpenTable)
rs.Index = "Primarykey"
rs.Seek "=", txtusuario.Text
If rs.NoMatch Then
MsgBox "Usuário não cadastrado !!!! ", , "Login"
Exit Sub
Else
If Not (rs![senha] = Codigo_Chave((txtsenha.Text))) Then
MsgBox " Senha Inválida !!! , tente novamente ", vbOKOnly, "Senha Incorreta"
txtsenha.SetFocus
txtsenha.SelStart = 0
txtsenha.SelLength = Len(txtsenha.Text)
Exit Sub
Else
MsgBox "Sucesso no Logon !!! ", , "Login"
Me.Hide
End If
End If
End Select
Exit Sub
trata_erro:
MsgBox Err.Description, vbOKOnly, " Erro # " & Err.Number
Exit Sub
End Sub
E a função que codifica a senha. Public Function Codigo_Chave(senha As String) As Long
Dim i As Integer
Dim ret As Long
For i = 1 To Len(senha)
Select Case (Asc(Left(senha, 1)) * i) Mod 4
Case 0
ret = ret + (Asc(Mid(senha, i, 1)) * i)
Case 1
ret = ret - (Asc(Mid(senha, i, 1)) * i)
Case 2
ret = ret + (Asc(Mid(senha, i, 1)) * i) * (i - Asc(Mid(senha, i, 1)))
Case 3
ret = Abs(ret - (Asc(Mid(senha, i, 1)) * i) * (i + Len(senha)))
End Select
Next i
Codigo_Chave = ret
End Function
Voce deve criar um tabela no seu banco de dados para guardar o nome do usuario e a senha, o nome deve ser uma chave primária e a senha um número do tipo inteiro longo.
A função Código_chave descodifica a senha e verifica se a mesma é válida ; se alguém tiver acesso ao seu banco de dados e abrir a tabela de senhas verá as senhas todas codificadas.
Embora simples , esta solução mostra que alguma coisa é possivel ser feita a nível de código para tentar proteger seus sistema . Mas não se engane, ela poderá ser facilmente burlada por um superusuário .
Atribuindo uma senha a seu Banco de dados
O Microsoft Access atualmente oferece duas maneiras de você proteger o seu banco de dados: ( leia também : Esqueceu a senha do banco de dados ? )
- Você pode atribuir uma senha a sua base de dados . Dessa forma para acessar os dados de sua base sempre será pedida a senha atribuida. Esse método é simples e pode ser utilizado para um usuário ou um pequeno grupo de usuários. Para trabalhar com segurança em ambiente multiusuário os caminhos serão outros...
- Segurança a nível de usuário e o sistema de contas.Entraremos em detalhes sobre este método no transcorrer deste artigo.
Ferramentas-> Segurança -> Definir senha do banco de dados (Ver na figura abaixo)
Podemos também fazer a atribuição via código no Visual Basic usando o método NewPassword do DAO.
O método NewPassword têm a seguinte sintaxe:
Objeto.NewPassword senha_antiga, senha_nova
Senha_nova é a senha que atribuimos a nossa base de dados.
Formulário para atribuir senha a uma base de dados Duas caixas de texto - Text1.text e Text2.text
Dim wks As workspace
Dim db As Database
Dim caminho As String
Dim password As String
Seu_Data_Control.Connect = ";pwd=senha"
Onde senha é a senha da base de dados.
Se for compactar uma base de dados com senha tenha o cuidado de informa a senha :
Vou parando por aqui... :-)
DBEngine.CompactDatabase "base_normal" , "base_compactada", dbLangGeneral, dbVersion30,";pwd=senha"
Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira ! Quer migrar para o VB .NET ?
Veja mais sistemas completos para a plataforma .NET no Super DVD .NET , confira...
Quer aprender C# ??
Chegou o Super DVD C# com exclusivo material de suporte e vídeo aulas com curso básico sobre C#.
Quer aprender os conceitos da Programação Orientada a objetos ?
Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?
Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ?
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a Objetos com VB .NET
Programando o sistema de segurança do Access - Macoratti ...