安全登录页面:javascript md5函数vs SSL,如果登录块在主页上


secure login page: javascript md5 function vs SSL, if login block is on the main page

我正在考虑从登录页面转移登录和密码时增加安全性。我在互联网上发现了一个javascript md5函数,所以发送密码的第一种方法是发送md5哈希值,而不是使用POST方法发送密码。据我所知,这种方法仍然存在许多问题,这种方法应该得到改进。密码不存储在数据库中,只存储md5哈希(还使用一些其他函数使其复杂化)。但是,我的问题是:这一切都是有意义的还是更好的选择ssl加密从托管提供商?每年花费大约100美元(让我们假设这是一个关于我的问题的好价格),而不是重新发明轮子。ssl的缺点(如果我没有错的话)是:如果登录部分在主页上,主页将加载较慢(尽管Yahoo!登录页面与HTTPS加载相当快)和任何用户将看到HTTPS在浏览器字符串(这不是坏的,但它是好的吗?)

如何使用的想法(无SSL):1)用户登录时,发送md5(password)代替真实密码2)服务器接收md5(密码),使其md5(md5(密码)+'kjhgkjhg'),并与存储在db中的哈希值进行比较。Db存储所有用户的md5(md5(password)+'kjhgkjhg')哈希值。因此,如果嗅探md5(password),则无法获得md5(md5(password)+'kjhgkjhg'),因为'kjhgkjhg'是未知的。确保登录页面安全的好方法是否足够好?

谢谢。

您需要让浏览器创建哈希MD5(password + random())并发送它而不是MD5(password),以便将来没有人可以使用哈希。然后,您需要在服务器端拥有明文或双向加密密码,并在服务器端执行相同操作并比较结果。您需要将发送到浏览器的随机字符串保存在服务器中,以便不能再次使用相同的随机字符串。这是可以的,但是。

    有人可能在中间劫持会话。只需捕获cookie并使用相同的IP和服务器是毫无防备的。
  • 没有SSL,用户无法知道他/她已经联系了正确的服务器,内容也不会改变。
  • 用户的网址和流量仍然可以被中间人或他/她的计算机上的木马读取。
  • 通常浏览器密码保存失败

但是的。SSL往往很慢,那些该死的证书会过期,破坏一切。

使用SSL。关于这一点真的没什么可说的了。如果您试图重新发明安全认证,您将会出错。

您建议不使用SSL的两个原因是成本和速度。

Cost:普通SSL证书和EV SSL证书的安全性没有区别。EV代表(E)扩展(V)验证,这意味着证书颁发机构会花更多的时间来检查您是否就是您所说的那个人。如果成本是个问题,那就买更便宜的SSL证书。

Speed:由于SSL协商导致的速度降低是相当小的这些天。我刚刚做了一个快速测试,对yahoo.com进行HEAD请求,在1000个SSL连接中平均用时0.2秒,在1000个非SSL连接中平均用时0.1秒。如果你的页面请求花了0.2秒,那么SSL延迟可能对你有影响,但如果他们花了整整一秒,那么其他原因就是它慢的原因。

如果你在http://security.stackexchange.com上搜索如何存储和传输密码,你会发现很多关于如何安全完成密码的好建议。