繁体   English   中英

从iPhone应用程序-> PHP-> MySQL保护用户密码的最佳方法是什么?

[英]What is the best way to go about protecting a user's password going from iPhone app -> PHP -> MySQL?

我需要将以下内容发送到我的服务器以通过POST进行存储:

&username = xxxx&password = zzzzz

我应该在发送之前加密它吗? 或者只是通过HTTPS(SSL)将其发送到我的PHP页面?

然后,我应该在PHP页面上进行加密以将其保存到MySQL服务器吗?

这里需要一些帮助,以了解什么是最好的iPhone应用程序-> PHP-> MySQL。

通过HTTPS发送它对于在iPhone应用程序和PHP之间进行通信应该很好。 您应该尽快使用良好的密码哈希算法对密码进行哈希处理。

如果您不熟悉良好的密码哈希惯例,则可能会发现以下有用: 如何在PHP中使用bcrypt哈希密码?

您可以使用md5()加密密码,也可以使用自己的加密/解密功能。

这是例子

从客户端

 $password = md5('password');

与数据库核对

 //security check
 $user = mysql_real_escape_string($_POST['username']);

 mysql_query("SELECT user_name, email FROM users WHERE username='".$user."' AND MD5(password)='".$password."'");

如果只想在传输过程中保护数据,那么HTTPS / SSL应该足够了。 显然,您可能还需要将加密值存储在MySQL数据库中。 在这种情况下,您还应该在执行sql查询之前对凭据进行加密。

正如其他人所说的那样,HTTPS应该足以保护途中的数据。 在服务器端,您不应以任何可逆的形式存储密码(除非出于某种原因需要使用纯文本,例如将其传递给第三方)。 我建议使用加盐的加密哈希。

本质上,您要做的是:当用户设置密码时,您会生成一个新的随机字符串( salt ),然后将密码存储为hash(salt + password)的结果。 该散列应该是强大的加密功能(如今,我建议使用SHA-256或类似的名称)。 这样,即使服务器受到威胁,也无法检索用户的明文密码。

当用户提交密码时,您可以再次简单地计算哈希(盐+密码)并检查结果是否与数据库中存储的内容匹配。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM