0

从登录页面传输登录名和密码时,我正在考虑提高安全性。我在 Internet 上找到了一个 javascript md5 函数,因此发送密码的第一种方法是使用 POST 方法发送 md5 哈希而不是密码。据我了解,这仍然存在许多问题,应该改进该方法。不存储数据库中的密码,仅存储 md5 哈希(还使用一些其他功能使其复杂化)。但是,我的问题是:选择托管服务提供商的 ssl 加密是否有意义或更好?它每年花费大约 100 美元(让我们假设关于我的问题的价格不错),而不是重新发明轮子。ssl 的缺点(如果我没记错的话)是:如果登录部分在主页上,主页会加载较慢(尽管 Yahoo!

如何使用(无 SSL)的想法:1)用户登录时,发送 md5(密码)而不是他的真实密码 2)服务器接收 md5(密码),使其成为 md5(md5(密码)+'kjhgkjhg' ) 并与存储在数据库中的哈希值进行比较。db 存储所有用户的 md5(md5(password)+'kjhgkjhg') 哈希值。结果,如果 md5(password) 被嗅探,获取 md5(md5(password)+'kjhgkjhg') 将无济于事,因为 'kjhgkjhg' 是未知的。确保登录页面安全的方法是否足够好?

谢谢你。

4

2 回答 2

1

使用 SSL。关于这一点,真的没什么好说的了。如果您尝试重新发明安全身份验证,您弄错。

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

成本:普通 SSL 证书和 EV SSL 证书的安全性没有区别。EV 代表 ( E )xtended ( V )alidation,这意味着证书颁发机构会花费更多时间来检查您是否是您所说的人。如果成本有问题,请获得更便宜的 SSL 证书。

速度:这些天由 SSL 协商造成的减速非常小。我刚刚对 yahoo.com 进行了 HEAD 请求的快速测试,我在 1000 个 SSL 连接中平均得到 0.2 秒,在 1000 个非 SSL 连接中得到平均 0.1 秒。如果您的页面请求需要 0.2 秒,那么 SSL 延迟可能对您很重要,但如果它们需要一整秒,那么其他原因就是它变慢的原因。

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

于 2011-11-26T11:49:47.337 回答
1

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

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

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

于 2011-11-26T08:59:28.660 回答