PHP持久登录不用担心窃取cookie
PHP Persistent Login not worry about stealing cookies
我对Charles Miller的文章"持久登录Cookie最佳实践"有点困惑,因为我不明白代码是如何防止有人窃取Cookie并在另一台计算机上登录的。
我看到并阅读了以下主题:
- https://stackoverflow.com/a/244907/3355243
- https://stackoverflow.com/a/30135526/3355243
- https://paragonie.com/blog/2015/04/secure-authentication-php-with-long-term-persistence title.2
在所有这些中,它解释了如何实现一个更安全的登录系统,尽管我不能弄清楚它如何防止窃取cookie,复制粘贴到控制台并使用它登录,即使处理两个不同的字段(系列/选择器和令牌)。
document.cookie="theCookieNameFromWebsite=theCookieValueFromVictim";
paragonie.com链接说:
CREATE TABLE `auth_tokens` (
`id` integer(11) not null UNSIGNED AUTO_INCREMENT,
`selector` char(12),
`token` char(64),
`userid` integer(11) not null UNSIGNED,
`expires` datetime,
PRIMARY KEY (`id`)
);
自动登录算法如下:
- 从令牌中分离选择器。
- 为给定的选择器获取auth_tokens中的行
- 用SHA-256哈希用户cookie提供的令牌
- 比较我们生成的SHA-256哈希值与存储在数据库中的哈希值,使用hash_equals()
- 如果步骤4通过,将当前会话与适当的用户ID关联
d'hell这如何防止我窃取cookie并使用它来登录我的受害者帐户?
它不阻止任何事情。仅用TLS(通常称为HTTPS)加密HTTP消息将确保没有人窃取用户的cookie(请注意,HTTPS 必须应用于整个域,而不仅仅是登录页面和"秘密"区域。
关于这个方法的作用,引用文章:
- 攻击者只能在受害者下一次访问网站之前使用被盗的cookie,而不是在记住的会话的整个生命周期内使用。
- 当受害者再次访问网站时,他将被告知被盗发生。
这样做的好处是,用户会尽快收到被盗的通知,而不是沉默地终止其他会话,或者更糟的是,将用户视为攻击者。
相关文章:
- 在jquery中为显示/隐藏设置cookie
- 按下按钮时保存cookie
- 如何在Analytics.js中始终了解最新的cookie过期时间
- php httponly cookie在浏览器关闭时被删除
- 如何在提交表单时将PHP变量传递到Javascript cookie中
- CORS-服务器端cookie没有保存在chrome浏览器上
- 如何为后台更改程序代码设置cookie
- 如何从另一个域加载cookie
- 使用jquery cookie的第三方cookie
- 无法在基于Cordova的应用程序中读取Set Cookie标头
- 如何在Javascript中将单选按钮值保存到cookie中
- cookie加载事件页面重定向
- MVC C#从jQuery和JSON.stringify创建的cookie中读取值
- 为什么可以't我在谷歌浏览器中返回cookie
- 如何使用单选按钮设置cookie值
- PhantomJS(vs nightwatch.js)设置cookie错误
- 如何照顾CSRF&单页应用程序中不使用cookie的XSS攻击
- 未使用Javascript在IE中设置Cookie
- 是一个javascript bookmarklet,可以设置破坏跨域安全的域cookie
- PHP持久登录不用担心窃取cookie