LightSwitch 的安全性考量

 

如需 Visual Studio 2017 的最新文件請參閱 Visual Studio 2017 文件

大部分商務應用程式有安全性的需求。 例如,您可能想要限制的員工都能存取應用程式或螢幕中應用程式,以及哪些使用者可以檢視或更新某些資料。 LightSwitch提供內建的驗證和授權模型,可協助您在您的應用程式中實作安全性。

驗證是一種機制,請確認使用者是誰。 例如,當您登入 Windows 時,您的使用者名稱和密碼驗證您其實是您。 授權是一種機制來定義什麼可以 – 或 – 無法。 例如,員工可能可以檢視他們自己薪資的資訊,但它們很可能就不會獲授權給予本身工資引發。

在 LightSwitch,驗證由用來識別使用者的登入畫面。 角色和權限一旦驗證使用者時,決定已授權的使用者執行應用程式中。

啟用驗證

驗證在LightSwitch停用的預設值 ; 在啟用存取控制應用程式的設計工具索引標籤。 支援的 Windows 驗證和表單驗證。 Windows 驗證使用使用者的 Windows 登入資訊來識別使用者。 使用表單驗證時,應用程式管理員會建立使用者識別及密碼。

在選擇 Windows 驗證時,您也可以選擇特定的使用者或所有的 Windows 使用者是否具有存取應用程式。 如果您選擇的所有使用者,任何具有有效的 Windows 登入識別碼的使用者將能夠存取應用程式,但是將只有授權的最小權限。 您也可以指派角色和權限給個別使用者視需要。

權限、 使用者和角色

中的授權LightSwitch藉由定義的權限、 使用者和角色達成。 權限由開發人員建立在存取控制在應用程式設計工具] 索引標籤和這些權限的效果設計來撰寫程式碼。 例如,您可能會建立授權使用者來檢視銷售螢幕的 ViewSales 權限。 在CanView方法以顯示在螢幕中,您可以撰寫程式碼,只允許目前的使用者授與權限來檢視它時要顯示畫面 除了設定檢視畫面的權限,您也可以建立個別的控制項,在畫面上,資料實體或實體]、 [查詢和更多的欄位中限制存取的權限。

在部署應用程式之後,應用程式系統管理員已建立角色。 角色包含一或多個使用權限。 例如,系統管理員可能定義 」 角色,並將 ViewSales 權限指派給該角色。 應用程式系統管理員也會新增使用者,並將角色指派給使用者。 例如,如果 Bob 是在業務部門,系統管理員可能會加入 Bob 的使用者身分,藉由加入他的驗證資訊,然後將他分派給 「 銷售 」 角色。 當應用程式執行時,程式碼會評估 Bob 的使用者資訊,他是 「 銷售 」 角色的成員,請參閱並顯示功能表項目,以顯示 [銷售] 畫面。

每個應用程式具有預設的權限, SecurityAdministration 權限。 此權限授與存取權使用者角色由應用程式系統管理員的系統管理畫面。 當發行應用程式第一次,您可以提供驗證資訊的人員才是預設應用程式系統管理員。 當該人員初次執行應用程式時,就會看到使用者角色螢幕,並定義使用者和角色。

測試授權

測試應用程式時您會想要確定您所定義的任何權限會在如預期般運作。 您執行這項操作藉由啟用偵錯使用權限上存取控制應用程式的設計工具索引標籤。 例如,如果您定義 ViewSales 權限,您也可以檢查授與偵錯該使用權限] 核取方塊。 當您偵錯應用程式時,您可以確認您可以檢視 [銷售] 畫面 – 您以具有 ViewSales 權限的使用者身分執行。 您可以設定權限,才能模擬可能會指派給某特定角色的權任何的限組合。

System_CAPS_ICON_note.jpg 注意

如果您啟用 SecurityAdministration 權限進行偵錯,您可以檢視系統管理使用者角色螢幕時您正在偵錯。 雖然您可以在這些畫面中輸入使用者和角色,使用者和角色將不會與應用程式部署,無法用於偵錯權限。

安全連線

三層式用戶端應用程式為基礎的LightSwitch和裝載在執行網際網路資訊服務 (IIS) 的伺服器上,應用程式與伺服器之間的通訊使用 HTTP 通訊協定而不是更安全的 HTTPS 通訊協定。 這項需求,可以讓您的應用程式容易受到攻擊。 安全通訊端層 (SSL) 加密可以協助保護用戶端應用程式和伺服器之間傳送的個人或機密資訊。 啟用 SSL 時,遠端用戶端應用程式會使用以 https:// 開頭的 Url 來存取伺服器。 我們建議您設定 SSL 的網站裝載應用程式為基礎的 LightSwitch. 如需詳細資訊,請參閱設定安全通訊端層 IIS 7

若要啟用 SSL
  1. 功能表列上,選擇建置發行

  2. 發行應用程式精靈,選擇 的安全性設定 ] 索引標籤。

  3. 需要安全連線 (HTTPS) 區段中,選擇選項按鈕。

    System_CAPS_ICON_note.jpg 注意

    在此設定時,網站必須正確設定,使用 HTTPS。

對於使用 SQL Server 資料層的三層式應用程式,IIS 和資料庫之間的通訊也是可能有的弱點。 我們建議您設定 SSL 為基礎的應用程式存取任何資料庫的 LightSwitch. 如需詳細資訊,請參閱加密 SQL Server 的連線

安全性和版本控制

當您使用LightSwitch受到版本控制,連接字串在 web.config 檔中的專案可能包含使用者名稱和密碼的最新的開發人員的專案。 這項資訊將用於的下一步的開發人員簽出專案。

這個問題不會套用到已發佈的應用程式。 從 「 發佈精靈 」 的連接字串資訊並不儲存於版本控制。 藉由使用而不實際執行資料庫的測試資料庫,在設計階段,您可以防止未經授權的使用者存取實際執行資料。

其他安全性考量

除了驗證之外,還有其他層面,您應該考慮的安全性。 即使您的應用程式不會處理機密企業資料,其他資訊,例如密碼可能暴露的風險。

安全性也是考量,當您撰寫程式碼存取的伺服器。 比方說,您可能撰寫查詢程式碼來篩選員工資料,讓員工只能看到自己的資料:

partial void Employees_All_PreprocessQuery(ref IQueryable<Application43.Employee> query)  
{  
    query = from item in query where item.EmpName == this.Application.User.Name select item;  
}  
  

這可顯示資料,如果使用者嘗試更新或刪除資料,並發生並行存取例外狀況,而其他員工的資料可能會公開在從伺服器傳回的資訊時發生錯誤。 若要避免這個問題,您會想要在確定員工只能看到自己的資料更新和刪除的方法中撰寫額外的程式碼:

Dim user As String = Me.Application.User.Name  
If Me.DataWorkspace.ApplicationData.Employees.Where(Function(e) e.Id = entity.Id AndAlso e.EmpName = user).Execute().Count() = 0 Then  
    Throw New DataServiceOperationException("Permission error: Cannot modify a record you don't have access to.")  
End If  

string user = this.Application.User.Name;  
if (this.DataWorkspace.ApplicationData.Employees.Where(e => e.Id == entity.Id && e.EmpName == user).Execute().Count() == 0)  
{  
throw new DataServiceOperationException("Permission error: Cannot modify a record you don't have access to.");  
}  
  

若要了解更多關於安全程式碼撰寫方式的一般資訊,請參閱建立安全的應用程式

如何:在 Silverlight 用戶端應用程式中啟用驗證
部署:散發與維護應用程式
偵錯:尋找和修正錯誤

顯示: