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

HTTP 简洁权限设计,防止私有资源被访问

  •  
  •   jedrek · 2015-04-16 07:36:34 +08:00 · 2968 次点击
    这是一个创建于 3516 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如 /topic/1 ,这个是私有资源,如何才能防止已经登录的其他人访问 /topic/1 这个资源?

    这里所说 http://www.cnblogs.com/hnsongbiao/p/3752617.html
    第二点,确实能看似“完美”做得到,但是这已经是将安全、权限的控制,带到了业务中,我觉得也不是太合理。

    你们是怎么设计的 ?
    10 条回复    2015-04-16 12:30:26 +08:00
    Septembers
        1
    Septembers  
       2015-04-16 07:41:30 +08:00 via Android
    无权访问应当响应401 Unauthorized
    Septembers
        2
    Septembers  
       2015-04-16 07:44:37 +08:00 via Android
    权限系统 纵横的 不仅要垂直权限 也需要设计水平权限
    你的提问中明显可以看出没有水平权限的设计
    babyname
        3
    babyname  
       2015-04-16 07:48:05 +08:00 via iPhone   ❤️ 1
    最简单的 如果是私有 不考虑用户角色和组的情况下,对比资源作者和登录用户是否匹配
    p1n3
        4
    p1n3  
       2015-04-16 08:23:50 +08:00 via iPhone
    这个懒偷不得的,在 /topic/1 验证当前登陆用户的session
    caixiexin
        5
    caixiexin  
       2015-04-16 09:06:15 +08:00   ❤️ 1
    一直以来开发都是用文章里的“修复方案2”,这好像比较符合开发的习惯性思维.
    还有文章里的“修复方案3”用token的方式,如果是网页的ajax或表单请求,token=md5(addressId+sessionId+key)这个生成方式应该是暴露在前端的js中的吧,那如果addressId还是自增id的形式,这个生成token好像没啥意义,知道生成方式后一样改个addressId生成token,是不是也能通过token校验?
    yakczh
        6
    yakczh  
       2015-04-16 09:13:46 +08:00
    权限设置是集中到一个配置文件好呢,还是象yii那样分散到每个action里面好呢?
    jedrek
        7
    jedrek  
    OP
       2015-04-16 09:25:49 +08:00
    @caixiexin 方案3还是有值得思考的地方的,暴露是一个。另一种情况是已经登录的情况下,直接在url中访问属于当前用户的另一个资源,那这个addressId就没有了,也就访问不到了。
    caixiexin
        8
    caixiexin  
       2015-04-16 09:32:37 +08:00
    @jedrek 我觉得想利用漏洞的人,应该不会仅限于改个url,最起码也会F12看下js里的认证逻辑嘛。不是有句话叫:“用户永远是最不安全不可控的一个环节”:)
    sanddudu
        9
    sanddudu  
       2015-04-16 11:01:04 +08:00 via Android
    @caixiexin 还有永远不要信任用户输入
    otakustay
        10
    otakustay  
       2015-04-16 12:30:26 +08:00 via iPhone
    权限本来就是一种业务啊,当然会带到业务中来
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2784 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 05:43 · PVG 13:43 · LAX 21:43 · JFK 00:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.