如何進(jìn)行web報(bào)表的用戶身份驗(yàn)證,提高數(shù)據(jù)安全性
每次我們生成Web報(bào)表時(shí),ajax請求都會導(dǎo)致處理程序的執(zhí)行:WebResource.axd和FastReport.Export.axd。在ASP.Net應(yīng)用程序中使用帶有axd擴(kuò)展名的文件從dll庫獲取資源:圖像、javascript和樣式。
結(jié)果,我們得到一個(gè)HTML報(bào)表文件。但是,由于已生成報(bào)表并將其放置在IIS緩存中,因此,知道生成的報(bào)表ID(根據(jù)請求生成)后, 不法分子就可以輕松獲取它。如果報(bào)表包含機(jī)密數(shù)據(jù),則這是一個(gè)潛在的安全問題。解決這種情況的方法可以是用戶身份驗(yàn)證。也就是說,如果報(bào)表是由特定用戶調(diào)用的,那么只有他才能獲得該報(bào)表的副本。
我們可以檢查http請求以進(jìn)行用戶身份驗(yàn)證,但這不是出路。惡意因素也總是可以欺騙請求。最好的解決方案是會話身份驗(yàn)證。直到最近,FastReport.Net才提供這種功能。但是在版本2019.3.13中,出現(xiàn)了一個(gè)事件,用于通過WebReport中的asp處理程序加載的報(bào)表資源的ajax身份驗(yàn)證。
在顯示報(bào)表之前,將執(zhí)行WebReport.CustomAuth事件。此時(shí),您可以檢查會話中的用戶。這是使用新事件的示例:
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"; } ...
如您所見,首先,在創(chuàng)建報(bào)表之前,我們在Http會話中設(shè)置用戶名,然后訂閱該事件。在事件處理程序中,我們執(zhí)行用戶檢查。如果其他用戶請求該報(bào)表,則其在會話中的名稱將不同,并且該報(bào)表將不會顯示。此示例顯示了用戶身份驗(yàn)證,但是您可以修改實(shí)現(xiàn)到您自己的版本。
因此,我們可以通過執(zhí)行報(bào)表身份驗(yàn)證來顯著提高數(shù)據(jù)安全性。
產(chǎn)品介紹 | 下載試用 | 優(yōu)惠活動 | 在線客服