通过Web发送密码

Fal*_*rri 5 php mysql security

所以我正在开发一个移动平台应用程序,我想让用户通过网络进行身份验证.我想知道做安全的最佳方法.用户正在将HTTP密码发送到php服务器,该服务器对同一服务器上的mysql数据库进行身份验证.显然我不想通过互联网以纯文本形式发送密码,但我也不想做2个SHA哈希.

这就是服务器的样子(伪代码)

$pass = $_POST['pass'];

if ((get PASSWORD where USERNAME = USERNAME) == SHA($pass)) return PASS;
Run Code Online (Sandbox Code Playgroud)

这是非常标准的,我认为没有任何其他方法可以做到这一点.但我想知道如何在通过互联网发送数据之前准备数据.

Tgr*_*Tgr 11

  1. 如果你想要安全,那你.必须.使用.HTTPS.使用适当的非自签名证书.无论你做什么,在未加密的通信中进行身份验证的身份将是微不足道的窃取.(不用担心密码,攻击者可以简单地窃取每个请求提供的会话cookie.)
  2. 哈希本身毫无价值,你必须加盐.(这与认证无关 - 这是当有人窃取您的数据库时的第二层防御.如果您成为有希望的目标,这可能迟早会发生.)使用bcrypt,每个用户使用长盐, sha*是不安全的,因为它太快了.
  3. 使用已由大型安全感知项目使用的方法.这些方法在某种程度上经受住了时间的考验.有基于挑战响应的方法可以避免以任何形式发送密码,但加密很难,并且以不安全的方式实现安全算法非常容易.使用一个好的安全框架(例如PHPass),不要依赖于没有广泛使用的代码.