流程描述如下:
前后端分离,前端全部采用 .ajax
类的请求,提交给后端 api server,然后页面根据后端的 json 数据,绘制图表,显示页面元素。
然后,涉及到至少两个安全问题:
前端页面如何在没有请求后端时(一上来就加载页面,页面加载完毕才去请求后端),没有后端响应头(response header)的支持下,做好诸如 X-Frame-Options:Deny
, X-XSS-Protection
, X-Content-Type-Options
, Content-Security
, Strict-Transport-Secutiry
等等安全问题?
纯前端利用 .ajax
请求,总是会暴露 url 请求地址 (而后端 api 一般只对 gui 程序 做 token 验证,因为 web 展示就不需要登录,或者说没有认证逻辑,不用登录就可以展示),如何保证不暴露这部分 api 被人恶意利用,或者退一步,不能做到不暴露,那么如何做到只有我的子域名能够请求生效呢?(js 貌似也可以操作请求头,即使 http header 携带 token 也有风险?例如 X-Access-Token: OAUTH-TOKEN X-Client-ID: CLIENT-ID
)
(具体的例子,我的 *.abc.com
请求 api.abc.com
才行,别的就不行;貌似用 token 机制,总不能避免 token 存储在客户端本地,而放在客户端那里总无法避免被盗用,就像加密存储在 cookie 中的数据)
初步的想法就是这样了,前端的大才子,大才女们,有任何意见,不妨指导一下?
1
Rhain 2018-12-28 11:55:29 +08:00
2. JWT 了解一下, 我觉得 token 放在客户端本地没问题吧。 主要你服务端做好 token 验证,过期等安全措施就可以。即使登录信息保存在服务端,也得在前端 cookie 中保存对应的标识,比如说 java 开发中 session 的 seesionId 对吧。
|