在我正在开发的Web应用程序中,我在连接到数据库时使用了一个天真的解决方案:
Connection c = DriverManager.getConnection("url", "username", "password");
这非常不安全.如果攻击者获得对源代码的访问权限,他也可以访问数据库本身.我的Web应用程序如何连接到数据库而无需在源代码中以明文形式存储数据库密码?
您可以将连接字符串存储在Web.config或App.config文件中,并加密包含它的部分.这是我在之前的项目中用来加密连接字符串的一篇非常好的文章:
http://www.ondotnet.com/pub/a/dotnet/2005/02/15/encryptingconnstring.html
在.NET中,惯例是将连接字符串存储在单独的配置文件中.
在那里,配置文件可以加密.
如果您使用的是Microsoft SQL Server,如果您使用域帐户运行应用程序,然后使用与数据库的可信连接,则这一切都变得无关紧要.在这种情况下,connectionstring将不包含任何用户名和密码.