请教finereport鉴权方案

我们公司使用finereport 4年多了,之前一直未关注鉴权问题,近期安全部门要求修复越权问题。

虽然我们的finereport 使用cas插件 实现了与业务系统的单点登录,但也仅此而已。

现在我们有4000余张存量报表,绝大多数是通过iframe嵌入在业务系统的前端页面中的。数据的筛选几乎都是通过前端传参,在sql的where条件中里拼接参数实现的。

现在要解决2个问题:

1、用户拿到iframe中的报表URL,通过篡改参数值,可以看到不属于自己范围的数据。

2、当前用户将报表URL发送给另一个已登录业务系统帆软用户,该用户可以在浏览器中直接打开改报表。

希望,各位大佬,多多出方案,不胜感激!!!

FineReport iQian 发布于 5 天前
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共5回答
最佳回答
0
snrtuemcLv8专家互助
发布于5 天前

这个你只能修改报表,改成post传参,然后带上人员信息,实现直接拼接参数可以看数据的BUG

最佳回答
0
ScyalcireLv7高级互助
发布于5 天前(编辑于 5 天前

那这...就是帆软自己的数据分析平台你们没用起来哇,还是用的自己那一套,帆软对你们只是作为数据展示~

-----------

你们业务系统有无完善的用户-角色管理体系,可以同步给帆软平台,然后报表通过用户名称或者角色名称去做权限控制,这样就算单点登录,也是可以直接访问的

  • iQian iQian(提问者) 我们业务系统有用户-角色的体系,但是按这个做的话,就需要每张报表 重新添加 鉴权的逻辑,也就是4000多张报表都需要这样修改,一个是捋清楚每个报表的权限,二是每个报表都要做修改。工作量太大了。
    2025-08-04 17:21 
  • Scyalcire Scyalcire 回复 iQian(提问者) 确实工作量很大哈哈哈哈哈,说明在项目规划的时候,没有考虑到权限控制这层,,,可以直接问下AI,看看有啥方法
    2025-08-04 17:23 
  • Scyalcire Scyalcire 回复 iQian(提问者) 看能不能用户访问的时候,url里面拼接一个一次性的token
    2025-08-04 17:25 
最佳回答
0
华莉星宸Lv7专家互助
发布于5 天前

用这个预览的地址

不要直接给模板的路径

image.png

  • iQian iQian(提问者) 这种地址的 参数,怎么传??也是直接拼接在URL 后面??
    还有从测试环境到生产环境,这个不会变吗??
    2025-08-04 17:23 
最佳回答
0
小枫残月Lv5见习互助
发布于5 天前
  1. 在数据表中加用户权限控制,用户名作为sql的筛选条件,可以控制用户自己拼参数查看非权限范围内的数据;

  2. 维护一个用户报表权限表,访问报表时先查询该用户是否有查看权限,如果没有可以添加条件属性,或者直接在查数据的sql里1=0,反之有权限就1=1

最佳回答
0
CD20160914Lv8专家互助
发布于5 天前(编辑于 5 天前

安全部门的要求如果要做,那么你的报表限制与设置肯定要改,就算有10000张也要改,而且改的时间还不短

1、模板必须要打开认证,不能得到报表地址就可以直接打开

image.png

image.png

2、内部系统嵌入iframe的话,必须要配置单点登陆,而且要配置https

iframe跨域单点登录 - FineReport帮助文档 - 全面的报表使用教程和学习资料

谷歌浏览器单点登录失败 - FineReport帮助文档 - 全面的报表使用教程和学习资料

image.png

以上两个部分是不能少的,不然解决不了你的权限问题!https配置单点以后,再打开模板认证,那么其它用户就没有办法获取不是权限范围的数据了,就算知道地址也打不开报表了!!

之前公司的方式:

所有用户登陆公司任何系统都通过统一用户认证的地方进入

这样保证所有用户使用的用户名是一样的,然后只要进入这个系统以后,就登陆了所有的系统,这样任何的系统再嵌入报表都可以的,当然https的配置+域名是必须的!!!这样能够控制权限,而且用户在浏览器F12看到报表地址以后,单独拿出来放在浏览器或者回到家去访问是不行的!!

  • iQian iQian(提问者) 你这 只是单点登录, 假如:2个人属于同一个角色,但不同的部门。如何控制 两个人不能看到对方的数据??
    单点只是保证了,必须登录才能查看报表,但登录后 只能看到自己范围内的数据,好像只能每张报表里加判断。
    2025-08-05 08:43 
  • CD20160914 CD20160914 回复 iQian(提问者) 那用人员的账号控制呀,如果同一个角色,不同的部门,你可以用部门来控制呀,部门,角色,人员账号都可以控制数据权限的!
    2025-08-05 08:52 
  • CD20160914 CD20160914 回复 iQian(提问者) 不同的部门,可能都有一个叫经理的角色,但是你创建的角色肯定名称也不要重复呀,比如角色名称叫: A部门经理 与B部门经理,那么这样就可以区分了呀。
    2025-08-05 08:53 
  • 6关注人数
  • 50浏览人数
  • 最后回答于:5 天前
    请选择关闭问题的原因
    确定 取消
    返回顶部