我对C#很陌生,我一直在做很多事情,但我缺少很多基础知识。 无论如何,我正在创建一个用户必须登录的程序,然后检查输入的密码是否与数据库中的密码相同。
无论如何,我知道有办法进入编译程序的代码,我想知道是否有任何我应该做的事情,以确保没有人能够以某种方式看到MySQL数据的登录信息。
由于
答案 0 :(得分:6)
根据您的规格和要求,您可以通过许多不同的方式Protect Connection Information。
一个简单的规则,永远不要在编译代码中包含数据库连接字符串!!!
一些链接
Protect Connection Information
SO - Encrypt connection string in NON ASP.Net applications
MSDN Securing Connection Strings
进一步提出意见中提出的问题 作为ANY连接字符串配置的辅助,您还应该使用Role Base Access Control来限制应用程序对数据库的访问,以减少授予应用程序的权限以及它可以执行的过程或Sql命令。
答案 1 :(得分:2)
防止人们看到您的MySQL连接字符串凭据的唯一方法是使用三层体系结构,其中您在服务器上运行的Web服务器或服务保存连接字符串并向数据库发出请求。您的客户端应用程序将与Web服务器/服务进行通信。
答案 2 :(得分:1)
我同意劳埃德的观点。
除了安全方面,保持连接字符串不受编译代码的影响意味着如果由于某种原因需要更改它,则不必重新编译和重新部署代码。通常,在您的站点突然停止工作之前,您不知道有人搞砸了服务器名称或数据库名称或凭据。在半夜。
答案 3 :(得分:0)
我在想这会是我的程序的一个问题,所以我正在制作一个PHP文件来处理POST数据并返回一个响应,我的服务器端的PHP文件保存数据库连接以及只返回有限的数据到我的C#程序。然后C#程序读取响应并得到适当的数据。这将使得它自己的程序执行HTTP POST并且不知道数据库用户和密码。同时让我控制可以将哪些数据发送到C#程序。
答案 4 :(得分:0)
无法向可以使用诸如入侵的ILSpy进入您的代码的人隐藏您的连接凭据。 «入侵者»可以看到找到他们所需的任何东西。例如,他/她可以看到您如何解密(所谓的...)加密的xml并使用相同的方法。
隐藏用户凭据的唯一方法是在数据库本身中,用户无法访问。
说明:如果用户必须输入自己的凭据才能登录到数据库,则该凭据将由数据库服务器检查,因此驻留在用户计算机中的应用程序中不会暴露任何凭据。而且用户看不到其他人的凭据。
所以:
在数据库中创建用户作为数据库用户。
允许他们访问应访问的任何表。
在您的程序中:
询问用户凭据。
检查是否可以使用这些凭据连接到数据库。