ReportViewer 控制参数安全
ReportViewer Control Parameter Security
我正在考虑在自定义网络应用程序的 ASP.NET 网络表单上使用 Microsoft.ReportViewer.WebForms ReportViewer 控件来显示 RDL 报告。 RDL 报告使用参数。其中一个参数是部门参数。部门A的用户应该只允许使用A作为参数的值,部门B的用户应该只允许使用B作为参数的值,依此类推。
部门参数值(以及所有其他参数值)将在托管 ReportViewer 控件的 ASP.NET Web 表单的代码隐藏逻辑中以编程方式设置。服务器端逻辑根据用户的配置文件查找部门参数值。报告已配置,因此部门参数不可见。
这是我的问题:
ReportViewer 控件中是否存在任何已知的后门,用户可以借此将 "department" 值作为 HTTP 请求的一部分进行传递,并获得对他们不应该访问的数据的访问权?请注意,此问题既适用于简单的表格报表,也适用于更复杂的钻取报表,其中部门可能是从主报表向下传递到钻取报表的值。
这在很大程度上取决于您如何使用 "security"。如果用户可以通过 Windows 身份验证访问报告,并且他们知道报告所在的位置(我猜他们可以在浏览器中使用 F12 工具找到),他们当然可以使用他们想要的任何参数,直接访问报告时。因此,最好在源数据库(或者,如果可能的话,在报告中)而不是在使用报告的 ASP.Net 应用程序中实施基于用户的限制。
我正在考虑在自定义网络应用程序的 ASP.NET 网络表单上使用 Microsoft.ReportViewer.WebForms ReportViewer 控件来显示 RDL 报告。 RDL 报告使用参数。其中一个参数是部门参数。部门A的用户应该只允许使用A作为参数的值,部门B的用户应该只允许使用B作为参数的值,依此类推。
部门参数值(以及所有其他参数值)将在托管 ReportViewer 控件的 ASP.NET Web 表单的代码隐藏逻辑中以编程方式设置。服务器端逻辑根据用户的配置文件查找部门参数值。报告已配置,因此部门参数不可见。
这是我的问题: ReportViewer 控件中是否存在任何已知的后门,用户可以借此将 "department" 值作为 HTTP 请求的一部分进行传递,并获得对他们不应该访问的数据的访问权?请注意,此问题既适用于简单的表格报表,也适用于更复杂的钻取报表,其中部门可能是从主报表向下传递到钻取报表的值。
这在很大程度上取决于您如何使用 "security"。如果用户可以通过 Windows 身份验证访问报告,并且他们知道报告所在的位置(我猜他们可以在浏览器中使用 F12 工具找到),他们当然可以使用他们想要的任何参数,直接访问报告时。因此,最好在源数据库(或者,如果可能的话,在报告中)而不是在使用报告的 ASP.Net 应用程序中实施基于用户的限制。