【问题标题】:ReportViewer Control Parameter SecurityReportViewer 控制参数安全
【发布时间】:2018-08-03 20:25:51
【问题描述】:

我正在考虑在自定义 Web 应用程序中的 ASP.NET Web 表单上使用 Microsoft.ReportViewer.WebForms ReportViewer 控件来显示 RDL 报告。 RDL 报告使用参数。参数之一是部门参数。只允许 A 部门的用户使用 A 作为参数的值,B 部门的用户只允许使用 B 作为参数的值,依此类推。

部门参数值(连同所有其他参数值)将以编程方式在托管 ReportViewer 控件的 ASP.NET Web 表单的逻辑代码中设置。服务器端逻辑根据用户资料查找部门参数值。报告已配置为不显示部门参数。

这是我的问题: ReportViewer 控件中是否存在任何已知的后门,用户可以通过该后门将“部门”值作为 HTTP 请求的一部分传递并获得对他们不应访问的数据的访问权限?请注意,此问题适用于简单的表格报表以及更复杂的追溯报表,其中部门可能是从主报表向下传递到追溯报表的值。

【问题讨论】:

    标签: asp.net reporting-services reportviewer


    【解决方案1】:

    这在很大程度上取决于您如何使用“安全性”。如果用户可以通过 Windows 身份验证访问报告,并且他们知道报告所在的位置(我猜他们可以使用浏览器中的 F12 工具找到),那么他们当然可以在访问报告时使用他们想要的任何参数直接地。因此,最好在源数据库(或者,如果可能的话,在报表中)而不是在使用报表的 ASP.Net 应用程序中实现基于用户的限制。

    【讨论】:

    • 谢谢。用户将无法直接访问报告。所有访问都将通过应用程序服务器。主要数据源将是 Oracle 数据库,因此尝试在数据源中嵌入基于用户/角色的限制可能不是一个可接受的解决方案(我们需要将用户身份从应用程序传输到 SSRS/报告到 Oracle)。我们的业务目标是使查询“易于”编写,而不必为编写查询的业务用户强加了解用户/角色安全性的负担。
    • 好的,我明白了。我仍然不知道的是:应用程序如何连接到报表服务器?
    • 该应用程序将使用 Windows Auth 或其他一些支持 SSRS auth 类型。 SSRS 服务器将被配置为仅允许某些帐户访问 SSRS 服务器。该应用将使用这些“服务”帐户之一连接到 SSRS。
    • 好吧,那么它就很安全了(和你的 Web 应用程序一样安全)。只需确保使用 HTTPS。
    猜你喜欢
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-19
    • 2015-11-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多