对于iOS应用程序,我应该是哈希客户端还是服务器端,为什么?

时间:2016-05-21 03:54:05

标签: ios rest security hash

我试图让我的客户端与我的服务器交谈我正在制作的应用程序,我想开始注册新用户。我不确定,即使通过网上的一些研究,这是最好的方法。

我这样想:

  1. 从textField获取密码,并通过https安全地将PUT请求发送到包含其他相关信息的服务器。

  2. 让用Python编写的服务器用盐哈希密码。

  3. 执行创建新用户后需要执行的任何确认电子邮件或文本。

1 个答案:

答案 0 :(得分:0)

免责声明:我不是安全专家。如需专家建议,您可以查看Security.StackExachange

您可能会在this stackoverflow question的答案中找到一些有用的见解,这与您的答案基本相同。

在我看来,最好是哈希和盐服务器端。如果您使用的是TLS,并且您的应用不是银行或类似的东西,那么您应该没问题。 TLS使用公钥加密来加密您的Web数据包。如果有人设法找出你的私钥,他们可以解密你的数据包并读取他们的内容,但除非你分发你的私钥,否则需要数百万年(检查this)来破解它。

如果您确实需要额外的安全性,可以使用另一种算法来加密客户端上的密码并在服务器上解密(可能是在服务器上存储私钥的另一级公钥加密),但是在大多数情况下,这不是必需的。

请注意,客户端上的哈希不会提高系统的安全性。如果攻击者可以解密您的数据包并获得散列密码,那么他们可以像访问明文密码一样访问您的数据库。

在任何情况下,最好尽量减少您需要通过用户的次数'网络上的密码(散列与否)。一旦用户创建了一个帐户并且您已经对其密码进行了哈希处理并将其存储在您的数据库中,您可以考虑向他们返回一个API密钥(可能是JWT或类似的东西),他们可以用于后续请求。