iOS安全使用密码向服务器发送数据

我正在构build一个应用程序,在服务器执行任何操作之前,需要从用户设备发送密码以在服务器上进行身份validation。 它是这样的:

  1. 用户的手机上有一个明文密码,作为bcrypt二进制文件在服务器中。
  2. 用户想要从数据库中获取一些东西,所以用户通过(目前是纯文本,不好的)发送他们的ID和密码到服务器。

    NSString *url = [NSString stringWithFormat:@"%@f=getUserInfo&ID=%@&password=%@",[[Globals global] operationServerName], self.ID, self.password]; NSData *data =[[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:url]]; 
  3. 服务器散列它从用户获得的密码,并从服务器检索已经散列的密码,并进行比较,如果它们匹配,则从数据库获取一些

问题是ID和密码是通过纯文本发送到服务器,我不知道该怎么做或实现,以使其安全,以避免窃听攻击。 我完全不知道该怎么做,但是我听说ssl / tls会有所帮助,如果任何人都可以在初级阶段向我解释如何解决这个问题或者指引我正确的方向,我真的很感激! 任何提示或解释如何改善这将是真棒! 我完全无能为力

也是服务器端明智的,这是很好的知道我应该添加在那里使应用程序成为可能。 我目前正在使用本地服务器,但是当它启用时,它将来自托pipe公司

您需要通过HTTPS连接而不是HTTP发送数据。 这样,客户端和服务器之间的数据stream将被encryption。

你需要在你的服务器上安装一个SSL证书(如果你不知道安装,只要求你的主机提供商这样做)。 现在不是在你的全局方法[[Globals global] operationServerName]中返回http链接,而是返回HTTPS( https://example.com

这应该负责encryption服务器和客户端之间的数据stream。

参考: http : //www.tldp.org/HOWTO/SSL-Certificates-HOWTO/x64.html