对于数据库应用程序,我们通常需要保存连接到数据库的服务器名称,用户名、密码等数据,而这些数据我们通常都是要进行加密处理的,因为显而易见,存储为明文将会导致密码的泄漏,影响数据的安全性!
现在问题来了,我们如何才能安全的保存 我们的用户名和密码呢?
通常情况下,我们采用这样的办法来保存连接的信息。

Public Sub SaveDBToFile()Sub SaveDBToFile()
Dim sw As New IO.StreamWriter("db.cfg")
sw.WriteLine(ServerName)
sw.WriteLine(UserName)
sw.WriteLine(Password)
sw.Close()
End Sub

Public Function Encrypt()Function Encrypt(ByVal Str As String) As String
' 这里仅仅表示一个测试。直接返回了这个字符串。
Str = Str
Return Str
End Function

Public Sub SaveDBToFile()Sub SaveDBToFile()
Dim sw As New IO.StreamWriter("db.cfg")
sw.WriteLine(ServerName)
sw.WriteLine(UserName)
sw.WriteLine(Encrypt(Password)) ' 对密码进行加密处理。
sw.Close()
End Sub
但是,如果你出现了和我以前有过的一样想法,那可能就要犯错误了。我的想法是,这样的简单加密密码还不是很安全,如果偷窥密码的人,连我的服务器名称、连接数据库的用户都不知道的话,岂不是更加安全了?好,说做就做,我们把服务器名称、连接用户名和密码统统加密,我看你还能怎么样?光知道我的用户名,密码你就猜吧!现在连我的用户名,你都不知道,我看你还猜什么!
修改后的保存数据库配置信息过程如下:

Public Sub SaveDBToFile()Sub SaveDBToFile()
Dim sw As New IO.StreamWriter("db.cfg")
' 服务器名称、用户名和密码全部都加密处理!
sw.WriteLine(Encrypt(ServerName))
sw.WriteLine(Encrypt(UserName))
sw.WriteLine(Encrypt(Password))
sw.Close()
End Sub
现在对这个连接配置文件进行一下小小的改动,用记事本打开它,把这个文件的第三行和第二行内容进行对调,重新启动我们的应用程序,结果数据库连接不上了,我们需要重新设置数据库连接,打开数据库连接配置窗口,发现用户名那个文本框的内容,出现了我们以前设置的密码!!!
好了,这里我们出现了问题,那么如何解决呢?
有一种办法,就是“见好就收”,就是我们使用的第一种方法,仅仅加密密码,对于服务器名称和用户名称不加密。如果你觉得这种方法不太安全,还是要让这些偷窥者们不知道你的用户的情况下来猜测密码,那么就让你保存的文本可以表示出这一行是什么含义,也是说我们的程序读取这个文本的时候,可以知道这一行保存的是服务器名称还是用户的密码。我们尝试将保存办法修改如下:

Public Sub SaveDBToFile()Sub SaveDBToFile()
Dim sw As New IO.StreamWriter("db.cfg")
' 服务器名称、用户名和密码全部都加密处理!
sw.WriteLine(Encrypt("S=" & ServerName)) ' S开头表示这个是服务器名称
sw.WriteLine(Encrypt("U=" & UserName)) ' U开头表示这个是用户名
sw.WriteLine(Encrypt("P=" & Password)) ' P 开头代码这个是密码
sw.Close()
End Sub我们程序在读取的时候,首先将数据行解密,然后根据解密后的字符串起始字符来判断该文本的含义。
(这个是我最近的一些小感想,希望大家可以发表自己的意见!)
本文探讨了在应用程序中安全保存数据库连接信息的方法。通过对比不同的加密策略,文章详细解释了为何仅加密密码并不总是最安全的选择,以及如何改进存储方式以增强安全性。

5383

被折叠的 条评论
为什么被折叠?



