我是否应该采取措施防止从对 CreateProcessWithLogonW 的调用中读取密码?
Should I take measures to prevent a password being read from a call to CreateProcessWithLogonW?
许多程序,如 Windows 上的 runas
和 *nix 上的 su
采取措施确保用户不会做愚蠢的事情,例如通过确保在批处理文件中写入密码密码不能通过管道传递给它或作为参数提供。
在工作中,有一项任务需要另一名员工重复完成,需要以域的管理员帐户登录。我正在编写一个调用 CreateProcessWithLogonW
的存根应用程序来完成此操作,而他们不可能看到纯文本密码,也不必向他们提供管理员密码。
我担心的是,如果使用十六进制编辑器(甚至是纯文本编辑器)打开密码,密码可能会在可执行文件中显示为纯文本。我是否应该采取措施确保此应用程序中的密码以混淆方式生成?
例如,从这样的结构开始:
typedef struct _MYPASS
{
unsigned int first4;
unsigned int next4;
unsigned short next2;
unsigned char last1;
} MYPASS;
再对这些位进行运算,生成登录密码对应的ASCII
这对于内部应用程序来说是否过大?
使用密码库分离 exe 和密码如何? -> How do I store and retrieve credentials from the Windows Vault credential manager?
对防止内部作业没有帮助,但以防 exe 进入野外。
许多程序,如 Windows 上的 runas
和 *nix 上的 su
采取措施确保用户不会做愚蠢的事情,例如通过确保在批处理文件中写入密码密码不能通过管道传递给它或作为参数提供。
在工作中,有一项任务需要另一名员工重复完成,需要以域的管理员帐户登录。我正在编写一个调用 CreateProcessWithLogonW
的存根应用程序来完成此操作,而他们不可能看到纯文本密码,也不必向他们提供管理员密码。
我担心的是,如果使用十六进制编辑器(甚至是纯文本编辑器)打开密码,密码可能会在可执行文件中显示为纯文本。我是否应该采取措施确保此应用程序中的密码以混淆方式生成?
例如,从这样的结构开始:
typedef struct _MYPASS
{
unsigned int first4;
unsigned int next4;
unsigned short next2;
unsigned char last1;
} MYPASS;
再对这些位进行运算,生成登录密码对应的ASCII
这对于内部应用程序来说是否过大?
使用密码库分离 exe 和密码如何? -> How do I store and retrieve credentials from the Windows Vault credential manager?
对防止内部作业没有帮助,但以防 exe 进入野外。