原創|使用教程|編輯:鄭恭琳|2019-10-15 16:02:51.143|閱讀 340 次
概述:我們以往生成報表文件時無法進行用戶身份驗證,這樣就會存在一些數據信息安全隱患。直到最近,FastReport.Net提供了能夠提高數據安全性的新功能。本文著重介紹該新功能,并提供了相關實用示例供報表用戶參考取用。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
每次我們生成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會話中設置用戶名,然后訂閱該事件。在事件處理程序中,我們執行用戶檢查。如果其他用戶請求該報表,則其在會話中的名稱將不同,并且該報表將不會顯示。此示例顯示了用戶身份驗證,但是您可以修改實現到您自己的版本。
因此,我們可以通過執行報表身份驗證來顯著提高數據安全性。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn