我开始思考这样一个问题:是否可以反汇编程序来检索它用于连接到某个程序的凭据数据库,或者可能在运行时拦截程序并操纵(SQL)查询(不是谈论 SQL 注入(inject))。
也许这是一个荒谬的想法,但我需要知道我的客户收到的程序是否应该使用仅有权访问(和权限,即只读)特定表的帐户。
最佳答案
这绝对不是一个荒谬的想法 - 有很多工具可以将程序反汇编为源代码。在 .NET 世界中,您有 Reflector和 ILSpy例如,大多数语言都有等效的东西。
如果用户名或密码以纯文本形式出现在源代码中,那么使用反汇编工具很容易获得它。如果它看起来是加密的,但加密算法和 key 是源代码的一部分,那么获取它就很容易了。
要解决此问题,在 .NET 世界中您可以 store an encrypted password在配置文件中。
或者,您可以将数据库配置为使用 domain authentication ,其中用户的域帐户透明地用于访问,而不是硬编码的用户名/密码。
最后,您应该始终使用 Principle of Least Privilege尽可能 - 只允许用户执行所需操作的最小子集。
关于c# - 是否可以反汇编程序来检索数据库凭证或更改 SQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12250135/