怎样在服务器端防止cookie被复制后的自动登录

musiclov 2019-01-19 12:49:33
我们知道,实现自动登录的一种方法是通过cookie,在cookie设置类似auto=userid|token这样的信息,服务器端也同时存有token。当客户端访问服务器的时候,同时携带有上面的cookie,服务器端判断后台是否有userid和token,如果有则自动登录。这样如果这个cookie被复制带别的电脑,如电脑B,则电脑B也能自动登录,这是个很大的问题。那怎么应对这个问题呢?我查了相关资料,解决方法之一是能够唯一识别客户端,给cookie加上唯一客户端id,类似这样:对电脑1,auto=userid|token|clientid1,这三个信息也同时存在服务器端。这样,即使这个cookie被复制到电脑2,因为电脑2的id和电脑1不一样,cookie变成:auto=userid|token|clientid2,服务器端收到这个cookie和后台比较,因为clientid2!=clientid1,不登陆,这样就达到了防范的目的。但是用什么来当作客户端唯一标识符呢?能想到的,1、mac地址,这个可伪造,而且js和服务器端都无法拿到,所以放弃;2、IP,这个部分可以,但是拨号上网等等IP都会变,正常用户反而用不了了;3、user-agent、这个也能伪造。所以想请教大家,有什么能比较完美的充当客户端唯一标识符的角色呢?是不是这个思路不对?
另外还有一个问题是网站开发方是不是不需要考虑题目的问题?因为cookie被复制,那可能是客户端自己的问题,所以作为网站开发方,是不是就不用考虑这个问题了呢?谢谢!
...全文
979 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yoyo83773 2021-03-04
  • 打赏
  • 举报
回复
httponly
musiclov 2019-04-08
  • 打赏
  • 举报
回复 1
谢谢回复,在看了以下的文章以后我已经放弃了考虑题目的问题。但是可以考虑在服务器端做一些验证,比如在很短的时间内登录地点不同,那么登录的时候就要输入验证码之类的 https://stackoverflow.com/questions/12233406/preventing-session-hijacking
sca4441479 2019-01-25
  • 打赏
  • 举报
回复
很easy啊,你随便找个网站,你看贴吧什么的, 登录时候cookie token都很长,里面都加了时间戳,也就是不同时间cookie不一样的,程序或者 别人想要登录网站,都需要走 提交登录表单的形式,登录表单 加上 复杂验证码 或者 拖拉卡片等形式 防止机器识别
幻凡ss 2019-01-24
  • 打赏
  • 举报
回复
设置时效,在关闭浏览器的时候清除cookle
哈希塞特 2019-01-24
  • 打赏
  • 举报
回复
就用ip,ip变了就重新让客户端登录
码匠笔记 2019-01-19
  • 打赏
  • 举报
回复 2
个人认为不需要考虑
举个例子
服务器相当于银行
你的服务端数据相当于你的银行账号
浏览器相当于提款机
cookies 相当于银行卡密码

你换了一个替换器当然可以取钱,但是你自己不小心把密码给别人了,那么钱丢了,银行需要承担责任吗?


81,095

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧