V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
CHYK
V2EX  ›  前端开发

前端的朋友帮帮忙:纯前端的页面,您是如何处理 X-Frame 等安全问题的?

  •  
  •   CHYK · 2018-12-27 18:46:19 +08:00 · 2179 次点击
    这是一个创建于 1946 天前的主题,其中的信息可能已经有所发展或是发生改变。

    流程描述如下:

    前后端分离,前端全部采用 .ajax 类的请求,提交给后端 api server,然后页面根据后端的 json 数据,绘制图表,显示页面元素。

    然后,涉及到至少两个安全问题:

    1. 前端页面如何在没有请求后端时(一上来就加载页面,页面加载完毕才去请求后端),没有后端响应头(response header)的支持下,做好诸如 X-Frame-Options:DenyX-XSS-Protection, X-Content-Type-OptionsContent-Security, Strict-Transport-Secutiry 等等安全问题?

    2. 纯前端利用 .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 中的数据)

    初步的想法就是这样了,前端的大才子,大才女们,有任何意见,不妨指导一下?

    2 条回复    2018-12-28 21:00:48 +08:00
    Rhain
        1
    Rhain  
       2018-12-28 11:55:29 +08:00
    2. JWT 了解一下, 我觉得 token 放在客户端本地没问题吧。 主要你服务端做好 token 验证,过期等安全措施就可以。即使登录信息保存在服务端,也得在前端 cookie 中保存对应的标识,比如说 java 开发中 session 的 seesionId 对吧。
    CHYK
        2
    CHYK  
    OP
       2018-12-28 21:00:48 +08:00
    @Rhain JWT 免去了服务端 session 存储 token 的代价,但是也需要 client 每次带过去 token。仔细思考过后,发现还是要让 client 携带 token。只是纯前端(不借助后端模板引擎)以前没有做过,有些不放心。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3291 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 12:19 · PVG 20:19 · LAX 05:19 · JFK 08:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.