Javascript PHP持久登录不必担心窃取Cookie
我有点困惑,因为我不明白代码是如何阻止某人窃取cookie并登录到另一台计算机的 我看到并阅读了以下主题: 在所有这些中,它都解释了如何实现更安全的登录系统,尽管我不知道它如何防止窃取cookie、将粘贴复制到控制台并使用它登录,即使处理两个不同的字段(序列/选择器和令牌) 链接上说:Javascript PHP持久登录不必担心窃取Cookie,javascript,php,cookies,Javascript,Php,Cookies,我有点困惑,因为我不明白代码是如何阻止某人窃取cookie并登录到另一台计算机的 我看到并阅读了以下主题: 在所有这些中,它都解释了如何实现更安全的登录系统,尽管我不知道它如何防止窃取cookie、将粘贴复制到控制台并使用它登录,即使处理两个不同的字段(序列/选择器和令牌) 链接上说: CREATE TABLE `auth_tokens` ( `id` integer(11) not null UNSIGNED AUTO_INCREMENT, `selector` char
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`)
);
自动登录算法类似于:
这怎么能阻止我偷饼干并用它把我登录到受害者的帐户上呢?这并不能阻止任何事情。只有使用TLS(通常称为HTTPS)加密HTTP消息才能确保没有人窃取您用户的Cookie(请注意,HTTPS必须应用于整个域,而不仅仅是登录页面和“秘密”区域 关于这种方法的作用,引用文章:
- 攻击者只能在受害者下次访问网站之前使用偷来的cookie,而不是在记住的会话的整个生命周期内
- 当受害者下次访问该网站时,他将被告知发生了盗窃
这里的优点是,用户将尽快收到盗窃通知,而不是默默地关闭另一个会话,或者更糟的是,将用户视为攻击者。不是。在文章的底部,它明确说明了这种方法的两个额外优点。链接被断开我明白你的观点当然可以,但是为什么我需要两个字段呢?一个保存会话id的简单字段或一个令牌可以完成相同的工作。唯一的(改进)我认为这种方法的不同之处在于窃贼是否有权访问数据库。引用:有了这种故障保护机制,如果auth_tokens表不知何故被泄露,立即广泛的用户模拟就会被阻止。如果你只保留会话ID,并将其用作身份识别,当两个冒名顶替者出现时,你就无法知道冒名顶替者是谁您可以使用相同的会话ID cookie,或者即使存在冒名顶替者。
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`)
);