V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
11
V2EX  ›  问与答

前后端分离后端 API 安全性最佳实践?

  •  
  •   11 · 2017-01-25 23:11:16 +08:00 · 2264 次点击
    这是一个创建于 2655 天前的主题,其中的信息可能已经有所发展或是发生改变。

    不太清楚这块 web 现在流行的做法,想讨教下下面几个问题:

    1. 前端发送 AJAX 请求,后端 CORS 验证足够吗?那如果攻击者直接手动发送请求, CORS 就没法检测了吧?
    2. 前后端 API 鉴权如何做?如果是非登录的 API (比如 get ),那么根据用户名密码生成 token 就不现实了吧?所以应该是生成特定的 token 然后检测是否过期?
    3. JWT 现在实践上能解决上述问题吗?

    一起探讨下,谢谢~~

    8 条回复    2017-01-26 11:22:25 +08:00
    Vogan
        1
    Vogan  
       2017-01-26 00:31:48 +08:00 via iPhone
    1.cors 是用来限定跨域请求,如果请求来自各种客户端,那么就是*了,和攻击者手动攻击有什么关系?如果是指定 ip ,那写在规则里就行

    2.不需要 token 的公开 API 就是正常请求啊,一般是一定时间请求次数,依据是 ip

    3.没用过。用的 oauth2
    zhouquanbest
        2
    zhouquanbest  
       2017-01-26 00:57:47 +08:00
    app 怎么做 web 就怎么做
    走 Oauth2 就好了
    Septembers
        3
    Septembers  
       2017-01-26 02:47:36 +08:00
    HTTPS Only (TLS 1.3)
    hxsf
        4
    hxsf  
       2017-01-26 10:02:50 +08:00 via iPhone
    @Vogan 1.只有 web 有 cors 。浏览器实现的

    2. 通用无状态 api 一般使用 header 里塞 token 来确认请求源身份。

    3.jwt 是一套别人的一种实现。还带了权限控制貌似,看得不多。详细看 jwt 官网。
    11
        5
    11  
    OP
       2017-01-26 10:25:46 +08:00
    @Vogan
    @hxsf 关于 CORS 我其实想讨论的是如何防止 API 被非法使用?
    hxsf
        6
    hxsf  
       2017-01-26 10:33:16 +08:00
    @11 #5 cors 仅仅能限制前端的跨域请求,一定程度上的防护,别人使用其他方式请求你的接口照样能拿到数据。

    身份核实还是要靠 其他手段来 鉴权,比如我刚刚说的第二个。
    11
        7
    11  
    OP
       2017-01-26 10:36:55 +08:00
    @hxsf 对我就是这个意思。 thanks
    hnch201414
        8
    hnch201414  
       2017-01-26 11:22:25 +08:00 via Android
    jwt 可以
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2449 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 08:32 · PVG 16:32 · LAX 01:32 · JFK 04:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.