找回密码
 立即注册

QQ登录

只需一步,快速开始

wu8829

中级会员

55

主题

266

帖子

643

积分

中级会员

积分
643

活字格认证微信认证勋章

wu8829
中级会员   /  发表于:2022-11-29 08:46  /   查看:6314  /  回复:28
尊敬的管理员,您好!

       现咨询关于AR安全性的三个问题,还请不厌其烦、详细解答,万分感谢!

问题一:
如果是winform项目,如何保证报表文件的安全性?如果直接将编译好的项目分发给别人,报表文件也定会一同分发,那别人只要用AR报表编辑器即可打开,亦能看到报表文件中的数据库连接字符串等信息,而且报表文件别人也能轻而易举的复制、编辑!

问题二:
接上面那个问题,如果报表文件采取的是共享数据源,别人依然能轻易查看数据库连接信息,这是何等的危害?

问题三:
报表文件的数据源能否设置为读取app.config中的数据库连接字符串?这样是不是稍微安全点?或者说,有更好的解决安全性问题的办法?

28 个回复

倒序浏览
Felix.LiWyn认证
超级版主   /  发表于:2022-12-9 17:00:07
来自 27#
wu8829 发表于 2022-12-9 16:43
谢谢,麻烦给出实现代码,我是小白兔

可以试一下这个:
  1. public object GetReport(string reportName)
  2.         {
  3.             try
  4.             {
  5.                 String URL = "http://192.168.222.1:8080/"+ reportName;
  6.                 String Info;
  7.                 HttpWebRequest wbRequest = (HttpWebRequest)WebRequest.Create(URL);
  8.                 wbRequest.Proxy = null;
  9.                 wbRequest.Method = "GET";
  10.                 wbRequest.ContentType = "application/xml; charset=UTF-8";
  11.                 MemoryStream ms_pub = new MemoryStream();

  12.                 HttpWebResponse wbResponse = (HttpWebResponse)wbRequest.GetResponse();
  13.                 using (Stream responseStream = wbResponse.GetResponseStream())
  14.                 {
  15.                     using (StreamReader sReader = new StreamReader(responseStream, Encoding.UTF8))
  16.                     {
  17.                         byte[] byte_pub = System.Text.Encoding.UTF8.GetBytes(sReader.ReadToEnd());
  18.                         ms_pub.Write(byte_pub, 0, byte_pub.Length);
  19.                         ms_pub.Seek(0, SeekOrigin.Begin);
  20.                     }
  21.                 }
  22.                 using (TextReader StreamTxtRead = new StreamReader(ms_pub))
  23.                 {
  24.                     PageReport ViewPgReport = new PageReport(StreamTxtRead);
  25.                     return ViewPgReport.Report;
  26.                 }
  27.             }
  28.             catch (Exception e)
  29.             {
  30.                 throw e;
  31.             }
  32.             return 0;
  33.         }
复制代码
在结合温大佬的,URL从数据库获取即可。
我这个是web端的,所以最后是return的ViewPgReport.Report;
咱们的直接reportLoad即可。结合一下这个和温大佬的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
wengMQ悬赏达人认证
银牌会员   /  发表于:2022-12-6 12:28:14
推荐
【   】报表文件保存到数据库与读取事例 - ActiveReports专区 - 求助中心 - 葡萄城产品技术社区  https://gcdn.grapecity.com.cn/showtopic-158562-1-1.html
回复 使用道具 举报
wengMQ悬赏达人认证
银牌会员   /  发表于:2022-11-29 09:21:27
沙发
可以采用报表文件内不保存真实的数据库连接字符串;等程序运行时传入
PageReport.Report.DataSources[0].ConnectionProperties.ConnectString = ExpressionInfo.FromString("");

评分

参与人数 1金币 +888 收起 理由
Bella.Yuan + 888 很给力!

查看全部评分

回复 使用道具 举报
wengMQ悬赏达人认证
银牌会员   /  发表于:2022-11-29 09:23:10
板凳
可以加我QQ546962925
回复 使用道具 举报
Bella.YuanWyn认证
超级版主   /  发表于:2022-11-29 11:26:16
地板
wengMQ 发表于 2022-11-29 09:21
可以采用报表文件内不保存真实的数据库连接字符串;等程序运行时传入
PageReport.Report.DataSources[0].C ...

感谢老铁帮忙回复,也可以参考这个教程哦~
Web端报表设计器如何绑定动态数据源
https://gcdn.grapecity.com.cn/fo ... 0&fromuid=65049
(出处: 葡萄城产品技术社区)
回复 使用道具 举报
wu8829
中级会员   /  发表于:2022-12-3 19:38:45
5#
除了动态绑定数据源,也还有报表文件本身安全性的问题,请问如何解决呢? winform项目,将报表文件分发到各客户机后,客户机可以用记事本直接打开报表文件,更改里面的文字再打印,这是完全不符合安全性的。
回复 使用道具 举报
Felix.LiWyn认证
超级版主   /  发表于:2022-12-5 13:54:40
6#
wu8829 发表于 2022-12-3 19:38
除了动态绑定数据源,也还有报表文件本身安全性的问题,请问如何解决呢? winform项目,将报表文件分发到各 ...

关于客户修改报表文件,他修改的只是报表设计,并没有牵扯任何数据。如果只是设计的话,应该不牵扯重要信息吧。
如果您还是不允许这样的话,只能说设计一个web端的,然后将这一切放在服务端,并且限制保存和另存为按钮,然后将所有报表文件都放在服务端。客户只能通过打开您发布的网站去访问和打开报表,那这样就没法是winform的
回复 使用道具 举报
wu8829
中级会员   /  发表于:2022-12-5 14:10:13
7#
Felix.Li 发表于 2022-12-5 13:54
关于客户修改报表文件,他修改的只是报表设计,并没有牵扯任何数据。如果只是设计的话,应该不牵扯重要信 ...

当然有敏感信息呀,例如,如果报表是一个合同文件,可以随意用记事本打开,随意修改合同中的收款账号。

您这个方法是一个取舍的方法,要么用web,要么就无法解决了吗? 没有其他方法了吗?例如:尽管是winform,那是否能将报表文件放到远程服务器的IIS中去远程读取呢?又或者:先加密报表文件,然后解密读取报表文件呢?
回复 使用道具 举报
James.Lv讲师达人认证 悬赏达人认证 活字格认证 Wyn认证
超级版主   /  发表于:2022-12-5 17:10:55
8#
本帖最后由 James.Lv 于 2022-12-5 17:12 编辑
wu8829 发表于 2022-12-5 14:10
当然有敏感信息呀,例如,如果报表是一个合同文件,可以随意用记事本打开,随意修改合同中的收款账号。
...

您好,
首先,报表文件本身是一个xml格式的文件,报表文件内容中只存放了报表的模板设计以及数据集字段绑定规则,并不会存放数据,报表只是在每次查看渲染的时候才会去数据源加载数据进行展示, 所以如果您的收款账号是从数据集字段来的,那么就算有用户编辑报表模板文件,也不会有任何影响;

第二个,AR也支持从数据库或者其它地方读取报表模板,进行渲染,可以不用放在客户端的,如果您需要这样设计的话,那必须得保证所有客户端都能访问到这个报表模板资源;如果可以访问到那就可以咱们自己实现了,比如放在服务器上,每次调用接口获取报表模板,上面说到了报表模板是个xml文件,您就可以先提前调用接口获取到报表模板得文件xml内容,然后再去open(报表);至于这个过程中是否需要加密解密,咱们完全可以自己实现这部分的逻辑;




回复 使用道具 举报
wu8829
中级会员   /  发表于:2022-12-5 19:10:11
9#
James.Lv 发表于 2022-12-5 17:10
您好,
首先,报表文件本身是一个xml格式的文件,报表文件内容中只存放了报表的模板设计以及数据集字段 ...

不怕您见笑,我也知道open,但是不知道从数据库读取后,怎么open啊;能否给两个例子代码:1个是如何从数据库读取xml然后用ar来open;1个是如何从IIS读取rdlx文件,来open。

期待您的回复!
回复 使用道具 举报
wu8829
中级会员   /  发表于:2022-12-6 11:20:30
10#
我也知道open,但是不知道从数据库读取后,怎么open啊;能否给两个例子代码:1个是如何从数据库读取xml然后用ar来open;1个是如何从IIS读取rdlx文件,来open。
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部