【仅供内部供应商使用,不提供对外解答和培训】
...
GlobalRequestFilterProvider和RequestParameterHandler在一定条件下都可以实现上面的两种场景。
在实践中,参数加密还存在一种特殊的变种,这类变种本身是通过将参数表用服务映射到一个随机的一次性ID上,让报表服务器利用ID来实现参数的实际获取。这类方案主要用于模板访问权限的变种授权(不让你用对应的参数来实现不允许你访问数据)和防重放攻击(ID由业务系统签发,可进行一次性的管理,防止重放)。方案的逻辑大致如下
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
场景:现有业务系统服务器SA,和决策平台FR。
在浏览器B上,通过登录SA,并向SA的服务器申请以p1=v1&p2=v2参数组合访问 FR的报表X
STEP1 B 通过URL_O 向SA申请 访问 X
STEP2 SA 接收到请求URL_O 后判断该用户是否有X报表的访问权限和对应的参数值权限,没有则终止
STEP3 如果有权限 SA 将参数组合 关联一个随机ID,有效期T。重定向到 FR的X报表的访问请求并携带ID
STEP4 FR 报表入口请求获取参数时,将ID 通过约定的请求 URL_P 将ID和密钥/或某种约定的TOKEN,发给SA 。
STEP5 SA确认请求时FR服务器发来时,通过ID找到对应的参数表,返回给报表服务器。(超时的参数会被自动移除,此时如果要防重放就删除该缓存),如果没有参数表则通知FR异常
STEP6 FR拿到参数后就可正常计算报表了。 |
这种方案的安全性理论上是这几类方案中最高的,该方案本身在用户浏览器上只传递了ID信息,完全没有参数的任何特征,不需要担心参数被别人抓取或泄露。但是这个方案从实践中看,也只能用于报表的访问入口请求。
免责声明:所有文档中的开源示例,均为开发者自行开发并提供。仅用于参考和学习使用,开发者和官方均无义务对开源案例所涉及的所有成果进行教学和指导。若作为商用一切后果责任由使用者自行承担。视频课程配套demo