接手公司的老项目,很多安全和身份相关的功能都是用 cookies 实现的。这玩意儿感觉既不好测试又不安全,以往都是使用 token 来做的身份安全相关
不知道现在在 web 端主流是用 cookies 还是 token ?
修正一下题目吧:现在前后端分离的新项目中做身份验证,是使用cookie+(session id/token),还是使用header+token比较流行
抱歉,没经过大脑思考就提出这样的问题,没想到引起这么大的反应,先给各位大佬道个歉, 占用公共资源了
提问方式确认有问题,这两个确实不能一概而论。一个是传输存储方式,一个是实现方案
其实想表达的是,web开发中身份验证方式,是使用header 加个token 头的方式比较流行还是直接通过cookie+(session id / token)方式管理比较流行
今天也被公司项目的cookie校验身份的一个bug整迷糊了(不是简单的校验cookie中的session id就可以了),以往都是直接对header 中的token就可以了。这种傻逼题目是在一脑子浆糊的情况下提出来的,见谅(已经跪下了)
以往开发的项目,都是前后端分离的或者是面向app的,使用header+token的方式做身份校验。前端把token信息保存在localstorage中(今天了解过后才发现localstorage是不能跨域的,子域也不行,以往的前端也确实是spa, 所以当web是非spa应用时,应该就只能选cookie了)
在我看来:
使用cookie+(session id/token)
优点:
缺点:
使用header+token
优点:
缺点:
至于xss,防范的手段还是在于网页的数据渲染上,只能靠过滤特殊字符实现,无论是localstorage还是cookie,只要注入了脚本,都是不安全的
如果给我选:
if spa {
chose Authorization header
}else {
chose cookie(session id /token) + httpOnly + 随机数
}
希望技术问题就事论事
101
wakzz 2020-07-23 22:27:24 +08:00
至少从目前的规范趋势看,未来肯定是去 cookie 化的。虽然 cookie 目前有绝大多数浏览器和 app 的支持,但是由于 cookie 机制早期的设计问题,有太多安全隐患。在可见的未来几年,chrome 会率先默认禁用 cookie,届时在没有新的成熟方案前,前后端的 session 追踪只能依赖 token 实现。
|
102
ochatokori 2020-07-23 23:23:54 +08:00
@love #52 为什么不安全,有什么场景是只能取到 localstorage 里面的 token 取不到 cookie 里面的 token
|
103
love 2020-07-24 08:30:55 +08:00
@ochatokori 这不是前端安全基本操作吗,token cookie 要加上 httponly 标记,就不会被 js 取到,防止意外引入的 js 偷 token
|
104
Lizhecao 2022-11-17 10:53:37 +08:00
看了一遍下来,感觉大佬们戾气好重,技术讨论而已,对事不对人。
|