PowerShell 和 SecureString 类

3

尝试访问FTP站点时,我可以使用明文密码进行身份验证并成功登录。但是,当我使用SecureString进行身份验证时,却无法通过验证。以下是示例:

$pw = "mypw"
$ftp = [system.net.ftpwebrequest] [system.net.webrequest]::create("ftp:myserver")
$ftp.Credentials  = new-object system.net.networkcredential("myuid", $pw)

这个运行良好。但是以下操作失败了。

$pw = "mypw"
$ftp = [system.net.ftpwebrequest] [system.net.webrequest]::create("ftp:myserver")
$ss = convertto-securestring -asplaintext -force $pw
$ftp.Credentials  = new-object system.net.networkcredential("myuid", $ss)

但是这样验证失败了。我哪里理解错了吗?

(顺便说一句,我知道不想在脚本中使用明文密码。这只是一个例子。)

2个回答

3
这是因为除非您使用安全FTP,否则FTP无法处理除纯文本用户名和密码以外的任何内容。这里是否存在一些混淆?

你是正确的,有些混淆了。我曾以为SecureString类存储了可解密的密码。当然,那是不正确的。 - Elroy Flynn

2

由于你的问题标记了“ftp”和“安全”,我只能建议你绝不要使用ftp,如果你想获得任何安全性的话。使用ssh代替telnet,使用scp代替rcp,使用sftp代替ftp。否则,在尝试保护内存中的密码并将其以明文发送到网络上后就毫无意义了。尽管在90年代我可以理解使用ftp,但我当时也不推荐这样做。但现在呢?我看不出有任何借口使用ftp。


谢谢您的评论,但它并没有解释出问题所在,因此我将其作为答案进行了投票。我无法控制FTP服务器。 - Elroy Flynn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接