2014-11-04 84 views
1

我正在構建一個Web應用程序來向我們的團隊和我們的客戶展示DataTable中的數據。javascript安全問題(jQuery DataTables)

當客戶登錄時,我想隱藏除他們之外的所有數據。某些行,某些列。當團隊登錄時,我希望所有數據都可見。

如果我使用DataTables columns.visible選項構建一個頁面並隱藏內容,取決於誰登錄,客戶是否能夠打開瀏覽器的開發人員工具並對javascript進行修改,從而顯示所有隱藏的數據?

如果這是真的,我需要在它離開我的服務器之前過濾掉數據(通過json通過AJAX提供)嗎?

+0

當然,你需要過濾它的服務器端 – 2014-11-04 16:46:31

+0

唯一安全的假設是「如果它被服務,那麼它是可見的」。 – 2014-11-04 16:49:26

+0

他甚至不需要js,看着開發人員工具網絡日誌就足夠了。所以過濾服務器端是不必要的。 – manji 2014-11-04 16:49:33

回答

0

當客戶登錄時,我想隱藏除他們之外的所有數據。某些行,某些列。當團隊登錄時,我希望所有數據都可見。

讓我們來定義你所說的「隱藏」的意思,你的意思是:

  1. 不可見的顯示器上,或
  2. 在網頁源文件或響應消息沒有發送到他們的機器。

1)以UI爲中心,而2)以安全爲中心。請記住,通過HTTPS發送的任何數據都將存儲在用戶計算機的內存中;即使它在GUI中不可見,也有方法可以訪問它。

如果您使用DataTables columns.visible隱藏內容,那麼這將完成1),但不是2),因爲數據仍在發送,對嗎?如果用戶打開瀏覽器的開發工具並查看原始HTTP響應,則所有數據都將在那裏。

如果該數據非常敏感 - 比如說地址和電話號碼 - 那麼這將被視爲應用程序中的漏洞。


我需要篩選出的數據離開我的服務器?

如果出於安全原因用戶不能查看數據,那麼只需關閉其可見性是不夠的:您根本無法傳輸數據。所以是的,在發送響應之前在服務器上過濾出來。