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

URL 参数保护有什么好办法

  •  
  •   wemore · 2018-11-27 23:27:06 +08:00 · 6744 次点击
    这是一个创建于 1948 天前的主题,其中的信息可能已经有所发展或是发生改变。

    项目中 URL 带了许多关键参数(这个没法改),稍微懂点电脑和英语的人都可以通过改变参数访问到他不该看到的东西(权限控制要改的话复杂度太大,系统设计在这方面考虑太少)。所以有什么方法加大被用户看到参数本身的难度?URL 编码算一个,POST 不考虑,希望他完全看不懂。加密的话项目需要 js 去获取 URL 参数来生成别的 URL 用,还要解密。有大佬有这方面的经验嘛==

    3 条回复    2018-11-28 01:51:12 +08:00
    jookr
        1
    jookr  
       2018-11-27 23:38:49 +08:00
    要么所有参数拼接混淆成可逆的传
    要么带 token 和私钥 key,这个 token 等于所有参数加私钥 key 的用某种方法混成的最终字符串,别人就算改了其中的参数和 token 对不上也没用
    honeycomb
        2
    honeycomb  
       2018-11-28 01:33:26 +08:00 via Android
    常见做法是加签名,比如这样的:

    参数按照字典排序+key 以后取 hash。
    然后服务器给的 key 只有很短的有效期,比如只能用一次,或者只有几分钟的寿命(废弃的 key 可以丢到布隆过滤器,再发展下去就变成很常见的 APIkey+accesskey 模型了)。

    这样至少可以杜绝直接改参数的攻击行为。
    GDC
        3
    GDC  
       2018-11-28 01:51:12 +08:00
    第一次看到以复杂度太大作为理由不改权限控制的… 改了参数就看到不该看的东西,不改权限改什么?
    别人发个 hash 过的 url 给我,但我没权限也能打开咯?
    把编码后的 url 添加到收藏夹中,过后没有权限了还是能看到咯?

    如果你说 不能 会对解码后的参数做校验,那还是权限控制。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5456 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 07:42 · PVG 15:42 · LAX 00:42 · JFK 03:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.