sha1和MD5足够安全用于cookie吗?

时间:2014-07-25 22:40:38

标签: php html cookies md5 sha1

因此,我尝试进行自动登录,这样用户每次都不必登录。为了做到这一点,我用

生成一个密钥
sha1(uniqid($user, true)).md5(uniqid())

现在我的问题是,这样安全吗?它会返回类似这样的内容

53495c810be8f24f141e478ccd9732f895dc10f6c0fe68391c482012297935c4b30ab12b   

看起来漂亮,非常安全。但它真的吗?任何帮助都会很棒。

1 个答案:

答案 0 :(得分:2)

如果您将生成的值用作"键"它作为cookie发送到浏览器,并且还引用了从未发送到浏览器的服务器上的数据,然后是有点安全但是过于复杂。如果是这种情况,则不需要包含用户名。为什么不每次都使数据完全随机?你可以通过以下方式完成同样的事情:

SHA1(uniqid())

由于只有一个哈希算法正在运行,因此性能也更好。 MD5不应该用于任何东西,所以除非需要严格的性能,否则我会使用sha1。

(在编辑#1中添加)如果您正在执行此操作,那么当您将身份验证记录存储在数据库中时,您应该跟踪它创建的时间,并强制它仅在特定时间内存在一生。提供"无限认证"机制总是不安全的,并且提供有时间限制的身份验证方案是一种对冲投注,我们每天都使用我们的浏览器中的cookie随着时间的推移而过期在服务器上,所以即使之后,攻击者会知道cookie的值,因此无法在预期的时间段内访问服务器上的资源。

如果您尝试将用户名和密码都存储在Cookie中作为哈希,那么该方法非常不安全。如果我是攻击者并且我知道该方案在起作用,我可以强制使用哈希来生成所涉及的用户名和密码。这需要时间,但是非常可行。什么样的"组合"无关紧要。您选择作为开发人员的哈希值。实际上,您尝试将加密解决方案组合起来以使其更加安全并且更加安全。可能会降低系统的安全性。