2010-05-24 104 views
2

在我的应用程序中,用户可以将文件上传到FTP服务器。要打开连接并写入服务器,我需要使用用户名和密码。在代码中使用FTP用户名和密码看起来像是一个安全问题。iPhone SDK:在代码中存储用户名和密码

有人可以告诉我如何安全地将其存储在我的代码中并使用它连接到服务器?

非常感谢!

回答

1

如果这是FTP,那么您将通过网络以未加密方式发送证书。如果您希望保护这些证书,那么您已经失败了,因为任何有兴趣的人都可以轻松地从无线网络中嗅出密码。我有一个简单的钻机设置,只是从iPhone的这种网络嗅探。

如果FTP是您唯一的选择,那么您应该承认这些凭据是公开的,并且要么使连接匿名,要么强烈限制您提供的凭据可以执行的操作。

特别是,您应该确保凭据(或匿名帐户)只能写入而不能读取。如果您的FTP服务器具有可以读取和写入的众所周知的凭据,那么它将很快成为软件和色情副本的主机。

如果您可以使用其他协议(HTTPS,SFTP等),那么这很好,但它实际上并不会节省您的时间。如果您使用软件发送登录凭证,并且它们有任何价值,它们将被反向设计。因此,虽然我建议使用HTTPS上传文件,但仍不能依赖您在程序中发送的证书的安全性。您仍然必须确保您的Web服务器能够容忍攻击者随意发送它。

+1

尽管有用的信息,这并没有真正解决这个问题。 – coneybeare 2010-05-24 16:43:53

+1

构成的问题没有解决办法;这是一个无法解决的安全问题。解决方法是询问正确的安全问题,这就是这个问题的答案。弗兰科德威尔解释得很好。 – 2010-05-24 17:03:45

3

使用FTP用户名和密码 代码看起来像是一个安全问题。

那是因为它是:-)

有人能告诉我我该怎么 安全这个存储在我的代码,并使用 它连接到服务器?

没有办法这么做 - 您正在寻找永久运动机器的安全等价物。你所做的任何事情都将通过默默无闻的安全来实现,并且会被反向设计。另外,当你在代码中嵌入秘密时,任何失败都将是灾难性的,并且没有简单的方法来恢复。

你想用这些凭据来实现什么?你是否希望强制服务器只能用你的代码访问?如果是这样,这也是一个不可能的任务,并且你应该简单地忘记尝试它。

您最好尝试认证用户,即让他们使用个人用户名和密码 - 这实际上取决于您的实际业务级别安全要求。

1

正如其他人所说,由于FTP是通过电报明文,你在那里的损失。

但是,在设备上存储信息有安全的方式,不管它是什么。这种机制通常被称为钥匙串,你可以按照steps outline here来做到这一点。您还需要阅读Security Overview。 GenericKeychain和CryptoExcercise code examples here都是很好的参考。