2010-02-18 195 views
1

我有需要跨多個Web服務驗證客戶端的情況。基本上,每項服務都需要識別客戶端並瞭解其他一些關於客戶端的小部分信息。通過客戶端從服務器發送到服務器的敏感數據

我現在工作的方式是,所需的標識信息通過身份驗證Web服務器存儲在數據庫的會話表中。 Web服務器向客戶端傳遞一個字符串,該字符串標識數據庫條目並傳遞給其他Web服務。然後,Web服務使用此字符串從數據庫條目中提取有關客戶端的所需信息。

我已經想到,可能會爲客戶端提供一個加密的blob,其中包含用戶標識和其他所需的信息,這些信息相當小,並且完全避免使用數據庫。客戶端只需傳遞blob(就像前一段中的字符串),而不需要知道它包含的內容,只有Web服務會知道如何解密它。

這應該消除數據庫存儲會話信息的需要,並且會使整個過程更簡單一些。有了數據庫,您不得不擔心清理舊會話和超時等問題。

所以我的問題:是否將服務中的敏感數據通過客戶端傳遞給服務,認爲是安全且可接受的?是否有可能以這種方式來消除客戶篡改數據的擔憂?什麼加密算法會很好用?我使用.Net特定的類將會非常有幫助。

回答

1

這似乎是一個合理的方法來簡化您的應用程序,但請記住,如果您使用客戶端來存儲識別數據,您將永遠容易受到session hijacking attacks

換句話說,無論你如何對blob進行加密,其他人都可以獲取用戶的瀏覽器數據並將其複製並冒充用戶。順便說一下,ASP.Net會話cookie也總是易受攻擊。

完全安全的唯一方法是使用SSL。

相關問題