项目中 URL 带了许多关键参数(这个没法改),稍微懂点电脑和英语的人都可以通过改变参数访问到他不该看到的东西(权限控制要改的话复杂度太大,系统设计在这方面考虑太少)。所以有什么方法加大被用户看到参数本身的难度?URL 编码算一个,POST 不考虑,希望他完全看不懂。加密的话项目需要 js 去获取 URL 参数来生成别的 URL 用,还要解密。有大佬有这方面的经验嘛==
1
jookr 2018-11-27 23:38:49 +08:00
要么所有参数拼接混淆成可逆的传
要么带 token 和私钥 key,这个 token 等于所有参数加私钥 key 的用某种方法混成的最终字符串,别人就算改了其中的参数和 token 对不上也没用 |
2
honeycomb 2018-11-28 01:33:26 +08:00 via Android
常见做法是加签名,比如这样的:
参数按照字典排序+key 以后取 hash。 然后服务器给的 key 只有很短的有效期,比如只能用一次,或者只有几分钟的寿命(废弃的 key 可以丢到布隆过滤器,再发展下去就变成很常见的 APIkey+accesskey 模型了)。 这样至少可以杜绝直接改参数的攻击行为。 |
3
GDC 2018-11-28 01:51:12 +08:00
第一次看到以复杂度太大作为理由不改权限控制的… 改了参数就看到不该看的东西,不改权限改什么?
别人发个 hash 过的 url 给我,但我没权限也能打开咯? 把编码后的 url 添加到收藏夹中,过后没有权限了还是能看到咯? 如果你说 不能 会对解码后的参数做校验,那还是权限控制。 |