簡體   English   中英

我的ASP.NET代碼有多安全?

[英]How secure is my ASP.NET code?

我正在開發一個與Google Maps連接並從數據庫檢索標記信息的ASP.NET應用程序。 標記信息在數據庫中分為多個表,表的名稱反映了公司(例如CompanyA_MarkerData,CompanyB_MarkerData等)。 為了使用新的標記數據定期更新地圖,我在JavaScript中使用setTimeout定期調用我的“ UpdateMarkers” JavaScript函數。 “ UpdateMarkers”調用一個Web服務,該服務執行數據庫查詢,並將標記列表返回給JavaScript,這反過來又更新了地圖。

這種方法的主要問題是我的Web服務要求我向它傳遞公司名稱,以便它知道要訪問數據庫中的哪個表。 可以想象,這帶來了安全風險,因為任何人都可以將不同的公司名稱傳遞給Web服務,並能夠從其他公司以及他們自己的公司中檢索數據。

為了避免出現此問題,我將按照以下方式重組程序:系統管理員為我的應用程序創建用戶時,他們還可以為該用戶分配公司ID。 公司ID是使用ASP.NET中的Profile對象存儲的。 我將Web服務代碼移到具有共享功能的類中,這樣它們只能在我的頁面中被調用(但不能被任何人調用,例如Web服務)。 這些功能仍然需要傳遞公司名稱才能傳遞給它們。 但是,不是JavaScript直接調用這些共享函數,而是JavaScript會調用一組頁面方法(據我所知,它們不是像Web服務一樣公開)。 然后,這些頁面方法將使用Profile對象來檢索附加到當前登錄用戶的公司名稱,然后調用我的共享數據庫函數,並將信息返回給JavaScript。

我認為第二種方法比第一種方法更安全,因為我不允許客戶端將不同的選項傳遞給我的代碼並檢索未經授權的數據。 服務器端代碼計算出需要發送的參數。 但是,我想知道是否有更好的方法使我錯過了?

謝謝

--Amr

您所需要的只是一種檢查服務器端是否允許用戶訪問該公司的數據的方法。

我假設您正在使用AJAX,因為您說的是使用Javascript從自己的數據庫中檢索信息。 因此,無論您調用哪個服務器端腳本/程序,都將用戶身份驗證代碼放在其中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM