保护密码免于反编译

Mat*_*har 2 .net c# passwords password-protection

我有通过预定的用户名和密码连接到SqlServer的程序.例如:

static void Main(string[] args)
{
    string UserName, Password;
    UserName = "Name";
    Password = "Pass";

    SqlConnection conn = new SqlConnection("...");
}
Run Code Online (Sandbox Code Playgroud)

如何保护密码免受反编译?

Eri*_*ert 15

首先,不要这样做.安全系统旨在保护用户免受试图让用户运行错误代码的攻击者的攻击.它不是为了保护您的程序免受其用户影响,而您正在尝试这样做.

由于多种原因,将用户名和密码硬编码为可执行文件是最糟糕的做法.首先,因为它授予拥有程序的人员访问数据库的权限,而不是授权人员.其次,这意味着如果您需要更改用户名或密码,则需要重新发送程序.第三,如果密码确实没问题,只需要出一次,会发生什么?您无法限制仅攻击者的访问权限.

一个更好的解决方案是要求每个用户都有自己的帐户; 让他们输入密码.或者将数据库访问与其他身份和授权方案(如Windows身份验证或其他)集成.

  • @DannyVarod,这就是数据库服务器能够设置权限的原因.这些可以设置为仅允许组X中的用户运行存储过程Y等集合.有时,特定的API(可能实现为SOAP服务)是有保证的,但有时它是过度的=) (4认同)