Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 在powershell的$env变量中存储密码是否安全?_Security_Powershell - Fatal编程技术网

Security 在powershell的$env变量中存储密码是否安全?

Security 在powershell的$env变量中存储密码是否安全?,security,powershell,Security,Powershell,我的$profile中有一些脚本需要密码才能连接到企业VPN或向虚拟化VM发送命令 我不想反复输入这些密码,在我的$profile中存储密码是不安全的。所以我想出了一个解决办法。在$profile启动时,我会这样做 $env:VpnPassword = (Get-Credential Domain\George.Mauer).GetNetworkCredential().Password 因此,当powershell启动时,我只需输入一次密码,然后在任何脚本中使用$env:VpnPasswo

我的$profile中有一些脚本需要密码才能连接到企业VPN或向虚拟化VM发送命令

我不想反复输入这些密码,在我的$profile中存储密码是不安全的。所以我想出了一个解决办法。在$profile启动时,我会这样做

$env:VpnPassword =  (Get-Credential Domain\George.Mauer).GetNetworkCredential().Password
因此,当powershell启动时,我只需输入一次密码,然后在任何脚本中使用$env:VpnPassword

我已经确认该变量仅对PS会话可用。我的理由是,既然它似乎在记忆中,那是一个相当安全的存放它的地方


我的逻辑正确吗?我正在创建的$env值是否只存储在内存中?页面文件呢?这是不是可以用来抓住这些绳子的东西?有没有更好的方法在不引入全新系统的情况下实现我的目标?

我验证了$env只存在于ram中。当PS关闭时,它没有留下任何指针。底层析构函数会激发,即使您将PS exe插入到中断中,它仍然会清除。即使使用共享内存攻击,据我所知,该地址空间仅对system32等和内核模式驱动程序可用。您必须知道确切的内存地址和数据大小,才能找到任何东西,前提是您甚至有一个足够高的进程。话虽如此,我真的认为没有必要加密


这个答案将在WM_CLOSE上开始自毁序列…

以明文存储密码无论如何都是不安全的。您可以从bsonposh模块使用导入凭据和导出凭据,或者至少将它们存储为SecureString。@NikolayKondratyev在内存中存储密码会造成什么安全威胁?这应该由操作系统来实现,对吗?如果它们绕过应用程序内存空间隔离,可能会有各种各样的问题需要担心。我可以将其存储为SecureString,但我不确定哪种攻击可以保护我。我会看看bsonposh,但我不确定我是否喜欢添加另一个依赖项的想法。。当然,这取决于你的环境。但如果你直奔这个问题,那么我认为你应该以某种方式保护自己,不是更好吗?将密码存储为SecureString并不是那么难。是的,但我想了解这些东西是如何工作的,以及我们为什么要做某些事情。