每次我们生成Web报表时,ajax请求都会导致处理程序的执行:WebResource.axd和FastReport.Export.axd。在ASP.Net应用程序中使用带有axd扩展名的文件从dll库获取资源:图像、javascript和样式。
结果,我们得到一个HTML报表文件。但是,由于已生成报表并将其放置在IIS缓存中,因此,知道生成的报表ID(根据请求生成)后, 不法分子就可以轻松获取它。如果报表包含机密数据,则这是一个潜在的安全问题。解决这种情况的方法可以是用户身份验证。也就是说,如果报表是由特定用户调用的,那么只有他才能获得该报表的副本。
我们可以检查http请求以进行用户身份验证,但这不是出路。恶意因素也总是可以欺骗请求。最好的解决方案是会话身份验证。直到最近,FastReport.Net才提供这种功能。但是在版本2019.3.13中,出现了一个事件,用于通过WebReport中的asp处理程序加载的报表资源的ajax身份验证。
在显示报表之前,将执行WebReport.CustomAuth事件。此时,您可以检查会话中的用户。这是使用新事件的示例:
public ActionResult Index() { Session["User"] = "Father Brown"; ... webReport.CustomAuth += WebReport_CustomAuth; ... } ... private void WebReport_CustomAuth(object sender, CustomAuthEventArgs e) { e.AuthPassed = (e.Context.Session["User"] as string) == "Father Brown"; } ...
如您所见,首先,在创建报表之前,我们在Http会话中设置用户名,然后订阅该事件。在事件处理程序中,我们执行用户检查。如果其他用户请求该报表,则其在会话中的名称将不同,并且该报表将不会显示。此示例显示了用户身份验证,但是您可以修改实现到您自己的版本。
因此,我们可以通过执行报表身份验证来显着提高数据安全性。
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果
转载请注明:文章转载自:FastReport控件中文网 [https://www.fastreportcn.com/]
本文地址:https://www.fastreportcn.com/post/2458.html
相关产品: FastReport.Net,