2013-03-08 61 views
3

我最近有一個Django本地服務器項目搞亂,我不得不像預防html檢查員的安全風險?

<form....{% csrf_token %} 
.... 
<input type="text" value="foo" readonly /> 
.... 
</form> 

一個輸入現在的輸入值應留我想要的方式(「富」),但我用谷歌瀏覽器檢查並能夠更改只讀輸入的值並將新值傳遞給服務器,從而節省了錯誤值。

所以,我有幾個問題:

  1. 什麼是一般規則或精神的清單,以防止類似安全隱患?

  2. 我可以使用JavaScript控制檯和損壞的數據嗎? 更新:YEP。

  3. 那麼,我必須基本上做我所有的服務器端檢查?

  4. 如果不是3,那麼受到html/js檢查員保護的客戶端驗證是什麼?

編輯:

我從答案的猜測,到目前爲止,它是爲3。因此我應該仍與客戶端的安全/檢查煩惱呢?他們真的會讓我更安全還是僅僅是一種虛假的安全感(這很糟糕)?我應該做客戶端檢查,以便可能在服務器端保存一些檢查,所以我的表現可能會更好? 基本上:我應該做多少客戶端檢查?

+2

永遠不要相信客戶。 – 2013-03-08 13:43:44

回答

1

問問你自己爲什麼需要這個只讀值。據推測,當用戶第一次請求表單時,就是你的代碼生成它的。那麼,當用戶請求的表單在用戶提交時不可用時,代碼可用於什麼?不應該有任何東西,這會導致您得出這樣的結論:該字段在提交時可以很容易地生成,而不需要在表單中出現。

1

您的服務器代碼必須是最終的權限,它不能依賴客戶端所做驗證的質量。查看所有客戶端,無論是HTML還是其他方式都容易受到迂迴用戶和易錯編碼員的影響。

+0

誰是不公平的 - 我已經糾正它。 – 2013-03-08 13:43:14

+0

謝謝埃德。反對票不解釋的思路讓我感到困惑 – djna 2013-03-08 14:50:17

2

爲了安全起見,您無法使用Javascript或客戶端上的任何內容回覆。只要確保你的服務器是安全的。

例如,您可以telnet到端口並將相應的數據發送到服務器。這將阻止,並通過JavaScript(或任何其他技術(在客戶端檢查。

只是用JavaScript來讓客戶更愉快,更敏感的用戶體驗。不要使用它的安全性。

1
  1. 永遠不要相信用戶發送的數據(Cookie,會話,在HTTP請求參數,...),所有的數據由用戶可以修改發送。

  2. 是當然的

  3. 這是還有待完成