V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
CopyPaste
V2EX  ›  程序员

以纯接口的方式做 Web,都用什么方式安全?

  •  1
     
  •   CopyPaste · 2016-04-08 18:00:15 +08:00 via iPhone · 4123 次点击
    这是一个创建于 2942 天前的主题,其中的信息可能已经有所发展或是发生改变。
    Argular 、 React 等默认都用接口来传递数据,那么
    1. 用户登录状态(没有 session 了)
    2. 跨域问题 (跨站安全问题)
    3. 标准的 Restful 接口不安全(比如 /user/<id> 这种方式, id 自增的话很容易被抓走全部信息)

    目前上面几个问题都解决了,只是感觉比较 ugly ,请教有相关项目经验的老司机都用什么方式解决。
    第 1 条附言  ·  2016-04-08 19:13:32 +08:00
    目前用的方案:
    1. JWT
    2. Cors
    3. Hashid
    16 条回复    2016-04-09 18:25:51 +08:00
    kenshinhu
        1
    kenshinhu  
       2016-04-08 18:03:14 +08:00
    登录这个可以用 auth2.0 之类的方式吧
    lovez
        2
    lovez  
       2016-04-08 18:26:23 +08:00 via Android
    同样有这些困惑
    xujif
        3
    xujif  
       2016-04-08 18:30:55 +08:00
    token=cookies
    跨域可以用 referer 白名单
    可读性和防抓取是互斥的。
    solome
        4
    solome  
       2016-04-08 18:31:06 +08:00
    我目前的做法是加个 Node 层做接口中转。
    slixurd
        5
    slixurd  
       2016-04-08 18:33:10 +08:00
    id 都是使用的 view_id 吧,有人用 snowflake 的 id ,也有人直接用 uuid ,不用自增 id 对外展示是常识....
    另外我们这边也接了个 node 中间层
    jerray
        6
    jerray  
       2016-04-08 18:57:14 +08:00
    加个中间层代理请求,过滤 API 数据,渲染基础模板,存储用户登录态。
    CopyPaste
        7
    CopyPaste  
    OP
       2016-04-08 19:11:03 +08:00 via iPhone
    @slixurd 目前用的 Hashid ,回头看看 snowflake 。
    CopyPaste
        8
    CopyPaste  
    OP
       2016-04-08 19:11:44 +08:00 via iPhone
    @solome
    @slixurd node 中间层处理什么问题?
    billlee
        9
    billlee  
       2016-04-08 20:36:53 +08:00
    跨域应该不是问题啊,如果用 cookies 保持 session, 那么就还是用一次性地 csrf 参数来防跨域。如果 session 是不是用 cookies 保持的,那就更没有跨域问题了。
    dong3580
        10
    dong3580  
       2016-04-08 21:23:55 +08:00
    1.cookies
    2.服务器可以设置请求来源。。。
    3.
    Wicheol
        11
    Wicheol  
       2016-04-08 21:25:54 +08:00 via iPhone
    关注一下
    ty0716
        12
    ty0716  
       2016-04-08 21:31:39 +08:00 via iPhone
    哈哈,看到有用 jwt 的了
    macrosea
        13
    macrosea  
       2016-04-09 10:33:39 +08:00 via iPhone
    mark
    china521
        14
    china521  
       2016-04-09 17:05:27 +08:00
    localStorage, 放 token, 每次调用 api 传过去.
    CopyPaste
        15
    CopyPaste  
    OP
       2016-04-09 18:24:40 +08:00 via iPhone
    @china521 我们也是这么做的
    CopyPaste
        16
    CopyPaste  
    OP
       2016-04-09 18:25:51 +08:00 via iPhone
    @CopyPaste 是不是很容易被窃取
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5685 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 03:35 · PVG 11:35 · LAX 20:35 · JFK 23:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.