繁体   English   中英

如何防止Cracker通过窃取Cookie获取登录权限

[英]How to Prevent Cracker Getting a Login Access via Stealing Cookies

我正在努力找到一个解决方案,以确保记住我的功能。 将使用Cookie。

function enc($string) {
   $slat = "%32!@x"; //can be auto-generated
   $hash = sha1(md5($slat.$string)).md5($string).sha1(md5(md5($string)));
   return $hash
}

echo enc("password"); //store user's password in db

我开始想“如果一个饼干偷了我的会员的饼干怎么办?” 在这种情况下,黑客将有权访问,直到黑客或原始用户注销。 没有证据(除了上次登录之外)该帐户被黑客入侵。 在这种情况下,每当原始用户使用“记住我”登录时,黑客将始终可以访问,直到原始用户更改密码。

假设,黑客无法获得密码。

解决方案(如果他/她偷走了用户的cookie,如何防止黑客获取访问权限):

1.在db用户表中,我输入了带有盐值的“Token”字段。

2.每次用户通过表单或cookie(自动登录)登录时,使用自动生成的值更新令牌。 此外,使用新哈希更新密码字段。

3.现在使用新值设置cookie。

4.以前的cookie不再有效。

5.假设黑客获得访问权限,他的访问权限将是临时的,直到原始用户访问其帐户,并且无法进行重大更改,例如更改密码/电子邮件。

黑客和用户将分享第2步! 每当黑客登录时,由于多个帐户访问,用户就会被访问,反之亦然。 这将表明帐户被盗,因此在原始用户只需更改密码之前不会太久。

这不是%100解决方案,但降低了风险的可能性,并警告用户有另一个人使用同一帐户。

我试图保持它尽可能简单。

解决方案是否足够好? 解决方案中存在重大缺陷吗?

您正在寻找的是session hijacking预防。 链接将向您解释需要完成的工作。 没有必要在这里唠叨已经说过和做过的事情。 是使用The Open Web Application Security Project中的插图描述攻击。

我会尽量保持这个简短,因为它可能很容易变得太长。

一个选项是在cookie中包含一些更多的识别数据,例如用户的IP地址(显然可能会改变)或他们的浏览器的用户代理(实际上不应该改变)。 如果你愿意,你可以包括其他东西,我现在只是使用这些,所以我可以保持更短:)

encrypt ( (user-agent and/or ip) and hash(token) )

会给你一个解密的字符串,你可以substr()已知长度断以最终获得您的令牌回来了,其他部分比较用户的当前数据。

或者,

hash(user-agent and/or ip) + hash(token)

允许您立即将令牌排除在最后,然后只是散列当前用户代理和/或IP并将其与cookie值进行比较。

显然,这更多的是关于如何缩小黑客使用被盗令牌的可能性。 如果原始用户将Firefox 3.5与某个用户代理一起使用,则黑客也必须使用它。 如果它来自某个IP,则需要绕过,依此类推。

暂无
暂无

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

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