2014-10-07 74 views
0

我有一個7臺服務器的集羣應用程序。通過瀏覽器的頭部注入

應用程序使用負載均衡器將用戶重定向到服務器。

對於使用SiteMinder的身份驗證。

對於驗證我們看到請求req.getHeader(「HEADER_NAME」)

標題名被傳遞到由SiteMinder的應用程序,並且用戶被認證。

當我們使用負載平衡器URL時,它與身份驗證一起工作良好,因爲SiteMinder負責處理任何可能的注入。

但是,當我們使用特定的服務器URL時,我們可以注入任何標題(例如使用Firefox中的修改標題),這就是問題所在。

有沒有一種方法來確定頭是否被注入?

感謝

回答

1

假設你正在尋找了頭只包含認證的用戶的用戶名,不,你不能確定頭部注射,因爲它看起來完全一樣的服務器,就好像SiteMinder的又增加了它。

如果有任何選項可以對頭進行加密,散列或簽名,那麼這將是檢查篡改的有效方法。

如果失敗,您可以限制對直接服務器URL的訪問,以便只有運行Site Minder的Load Balancer才能訪問它們。爲了實現這一點,你不會將公共IP路由到服務器本身。

0

沒有辦法認識到,頭球攻門被注入。您可以使用兩個optinons之一:

  1. 由於SilverlightFox建議加密的用戶ID,而不是發送標題爲純文本。您可以通過使用SiteMinder的ActiveResponse功能來執行此操作,該功能允許您注入一個生成標題值的Java類。

  2. 另一個更簡單的選項是定義應用程序和SiteMinder設置之間的共享密鑰。然後您可以確保共享機密也作爲標題與用戶標識一起發送等。如果共享機密字符串未發送/不匹配,則可拒絕該請求。 這不像第一種選擇那樣安全,但是,假設你有合適的安全策略(受限訪問服務器/ SM配置,只允許管理員直接訪問服務器URL等),這應該就足夠了。

但是,如果您對安全流程不太確定,最好使用第一個選項。

希望這會有所幫助。