隐藏字符串中的密码

时间:2009-09-09 19:38:01

标签: c# security string passwords obfuscation

我正在创建一个自定义ftp客户端,它登录到一个ftp站点并转到特定文件夹以避免用户将文件放在错误的位置。

我并不是非常关心它,但密码只是一个字符串来启动新的ftp对象。

FtpClient ftp = new FtpClient("www.markonsolutions.com", "user", "password");

保护此密码不被窥探的最佳方法是什么?

4 个答案:

答案 0 :(得分:10)

FTP仅支持纯文本身份验证 - 如果要隐藏攻击者的密码,则必须使用FTPS (FTP over SSL)

<强>更新

作为第一步,不要关心在源代码中隐藏和混淆密码 - 您的应用程序必须解密它并通过网络以纯文本形式发送。每个人都可以启动WireShark或任何其他数据包嗅探器,并以纯文本形式返回密码。 首先确保您不通过网络以纯文本形式发送密码,然后开始考虑在代码中对其进行模糊处理。

<强>更新

在您以简单文本发送密码时,对代码中的密码进行模糊处理会产生任何安全性,但您可以这样做。只是加密字符串会增加一个间接层。在没有模糊处理的情况下,我必须在您的应用程序中找到密码,而Reflector只需要几分钟,我需要找到密钥,加密密码和加密方法。这可能只需要几分钟。

使用混淆器阻止我反编译您的应用程序(转换成可读代码)可能会让我停止几个小时,直到我找到相关的调用系统库函数(但我不会尝试,但只读取来自的密码)电线;)。

所以我建议不要努力模糊密码 - 普通用户可能无法在可执行文件中找到明文密码,并且无法通过模糊处理来阻止愿意找到密码的人。在这种情况下,唯一的方法是首先不要在您的应用程序中包含密码。

答案 1 :(得分:2)

您可以使用this保护您的纯文本字符串免受反射器等程序的攻击。<​​/ p>

答案 2 :(得分:1)

请参阅this SO post,了解如何加密和解密字符串,在这种情况下是您的密码。

您还应该考虑obfuscating您的代码,以便使用适当工具的人通过调试代码来获取密码。

答案 3 :(得分:0)

在受保护的文件中创建密码和连接URL配置参数。我使用INI文件,它们被放置在受Web服务器保护的目录中,这样浏览器就无法打开也看不到文件/目录。