我怎么能以安全的方式存储这些信息?
源代码:
private void Initialize() { server = "xxx"; database = "xxx"; uid = "xxx"; password = "xxx"; string connectionString; connectionString = "SERVER=" + server + ";" + "DATABASE=" + database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";"; connection = new MysqLConnection(connectionString); }
解决方法
如果单个数据库由具有不同安全性问题的多个用户共享,我怀疑它是,那么你真的不应该在本地,代码,配置,配置中加密等存储数据库连接字符串.客户端永远不应该有这些信息.这是真正保证客户端安全性的唯一方法.
坚定的人可以简单地对您的代码进行反向工程,并解密连接细节.此外,如果他们使用类似.NET Reflector的东西来调试代码,他们可以使用反射从连接对象中提取连接字符串,包括密码.然后,他们直接连接到您的数据库并提取他们想要的任何信息是微不足道的.当然你可以有一个IP白名单,但如果其中一个用户不好,那么你仍然有同样的问题.
我的建议是您创建一个将操纵您的数据库的Web服务.最终用户使用的软件只需使用用户凭据通过Web服务对自身进行身份验证,然后使用该服务访问允许的资源.这是现代应用程序的运作方式.
如果每个用户都有自己的数据库,那么您只需存储本地加密的连接字符串,因为这足以防止大多数问题,除了可以访问用户计算机的恶意用户.
显然,正如弗拉基米尔所说,你可以把它作为一般解决方案(在配置中加密并希望最好),但如果需要任何安全性,我真的不建议这样做.例如,如果您将用户密码存储在数据库中 – 即使是以散列形式存储 – 这也不是一个安全的想法.您为每个人使用此方法所带来的风险是,有人可能会盗取您的所有数据,或者擦除您的所有数据,甚至操纵数据对他们有利.
原文地址:https://www.jb51.cc/csharp/243760.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。