wu8829 发表于 2022-11-29 08:46:33

关于AR安全性的三个问题

尊敬的管理员,您好!

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

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

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

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

Felix.Li 发表于 2022-12-9 17:00:07

wu8829 发表于 2022-12-9 16:43
谢谢,麻烦给出实现代码,我是小白兔

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

                HttpWebResponse wbResponse = (HttpWebResponse)wbRequest.GetResponse();
                using (Stream responseStream = wbResponse.GetResponseStream())
                {
                  using (StreamReader sReader = new StreamReader(responseStream, Encoding.UTF8))
                  {
                        byte[] byte_pub = System.Text.Encoding.UTF8.GetBytes(sReader.ReadToEnd());
                        ms_pub.Write(byte_pub, 0, byte_pub.Length);
                        ms_pub.Seek(0, SeekOrigin.Begin);
                  }
                }
                using (TextReader StreamTxtRead = new StreamReader(ms_pub))
                {
                  PageReport ViewPgReport = new PageReport(StreamTxtRead);
                  return ViewPgReport.Report;
                }
            }
            catch (Exception e)
            {
                throw e;
            }
            return 0;
      }在结合温大佬的,URL从数据库获取即可。
我这个是web端的,所以最后是return的ViewPgReport.Report;
咱们的直接reportLoad即可。结合一下这个和温大佬的

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.ConnectionProperties.ConnectString = ExpressionInfo.FromString("");

wengMQ 发表于 2022-11-29 09:23:10

可以加我QQ546962925

Bella.Yuan 发表于 2022-11-29 11:26:16

wengMQ 发表于 2022-11-29 09:21
可以采用报表文件内不保存真实的数据库连接字符串;等程序运行时传入
PageReport.Report.DataSources.C ...

感谢老铁帮忙回复,也可以参考这个教程哦~
Web端报表设计器如何绑定动态数据源
https://gcdn.grapecity.com.cn/forum.php?mod=viewthread&tid=55960&fromuid=65049
(出处: 葡萄城产品技术社区)

wu8829 发表于 2022-12-3 19:38:45

除了动态绑定数据源,也还有报表文件本身安全性的问题,请问如何解决呢? winform项目,将报表文件分发到各客户机后,客户机可以用记事本直接打开报表文件,更改里面的文字再打印,这是完全不符合安全性的。

Felix.Li 发表于 2022-12-5 13:54:40

wu8829 发表于 2022-12-3 19:38
除了动态绑定数据源,也还有报表文件本身安全性的问题,请问如何解决呢? winform项目,将报表文件分发到各 ...

关于客户修改报表文件,他修改的只是报表设计,并没有牵扯任何数据。如果只是设计的话,应该不牵扯重要信息吧。
如果您还是不允许这样的话,只能说设计一个web端的,然后将这一切放在服务端,并且限制保存和另存为按钮,然后将所有报表文件都放在服务端。客户只能通过打开您发布的网站去访问和打开报表,那这样就没法是winform的

wu8829 发表于 2022-12-5 14:10:13

Felix.Li 发表于 2022-12-5 13:54
关于客户修改报表文件,他修改的只是报表设计,并没有牵扯任何数据。如果只是设计的话,应该不牵扯重要信 ...

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

您这个方法是一个取舍的方法,要么用web,要么就无法解决了吗? 没有其他方法了吗?例如:尽管是winform,那是否能将报表文件放到远程服务器的IIS中去远程读取呢?又或者:先加密报表文件,然后解密读取报表文件呢?

James.Lv 发表于 2022-12-5 17:10:55

本帖最后由 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

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

我也知道open,但是不知道从数据库读取后,怎么open啊;能否给两个例子代码:1个是如何从数据库读取xml然后用ar来open;1个是如何从IIS读取rdlx文件,来open。
页: [1] 2 3
查看完整版本: 关于AR安全性的三个问题