zlt2000 / microservices-platform

基于SpringBoot2.x、SpringCloud和SpringCloudAlibaba并采用前后端分离的企业级微服务多租户系统架构。并引入组件化的**实现高内聚低耦合,项目代码简洁注释丰富上手容易,适合学习和企业中使用。真正实现了基于RBAC、jwt和oauth2的无状态统一权限认证的解决方案,面向互联网设计同时适合B端和C端用户,支持CI/CD多环境部署,并提供应用管理方便第三方系统接入;同时还集合各种微服务治理功能和监控功能。模块包括:企业级的认证系统、开发平台、应用监控、慢sql监控、统一日志、单点登录、Redis分布式高速缓存、配置中心、分布式任务调度、接口文档、代码生成等等。

Home Page:http://zlt2000.cn

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

关于LocalStorage中存放token的安全性问题

trust-freedom opened this issue · comments

通过admin用户登录mp.zlt2000.cn后,查看LocalStorage,可以看到两个信息
1、login_user
其中包含了admin管理员加密后的password 以及 很多登录用户相关信息
{
"id": 1,
"createTime": 1510909019000,
"updateTime": 1548229920000,
"username": "admin",
"password": "$2a$10$TJkwVdlpbHKnV45.nBxbgeFHmQRmyWlshg94lFu2rKxVtT2OMniDO",
"nickname": "管理员",
"headImgUrl": "http://file.zlt2000.cn/group1/M00/00/00/rBJttFztYwyABaTaAAaskHJyvCo696.jpg",
"mobile": "18888888888",
"sex": 1,
"enabled": true,
"type": "APP",
"openId": "123",
"roles": [
{
"id": 1,
"createTime": 1510909019000,
"updateTime": 1537321150000,
"code": "ADMIN",
"name": "管理员",
"userId": null
}
],
"roleId": null,
"oldPassword": null,
"newPassword": null,
"permissions": [
"user-btn-add",
"user-list",
"user-roles",
"user-btn-export",
"user-btn-import"
],
"userId": "123",
"accountNonExpired": true,
"accountNonLocked": true,
"credentialsNonExpired": true,
"del": false
}


2、token
其中包含OAuth2的访问令牌、refresh token
{
"access_token": "f80ecd30-fd5f-4597-8416-66092672e78d",
"token_type": "bearer",
"refresh_token": "bab98952-0359-4ec7-9930-2ca3613e3bb8",
"expires_in": 3334,
"scope": "app"
}


疑问:
1、请问将这些重要信息,尤其是加密后的password、token存放在LocalStorage中,如果发生XSS攻击,如何防范??网站安全性如何保障??

2、另外,mp.zlt2000.cn 也使用了cookie,请问仍然是使用cookie与网关上的session关联做会话管理的吗?那么交给前端的OAuth2访问令牌是做什么用的??访问令牌有必要交给浏览器吗??

commented
  1. 你说得没错,这些用户敏感信息确实不应该放前端储存
  2. cookie是用于单点登录用的,正常的授权认证用的是token不会使用session