2011-10-07 32 views
0

我將在我的例子中使用PHP,但我的問題適用於任何編程語言。Web開發:如果管理員後端應該如何鎖定?

每當我處理,可以在沒有登錄誰的用戶填寫表單(換言之,不受信任的用戶),我做幾件事情,以確保它是安全的數據庫來存儲:

  • 驗證$ _POST中是否存在所有預期的字段(使用Firebug等工具刪除了所有字段)
  • 確認$ _POST中沒有意外的字段。這樣,數據庫中的字段不會意外地被寫入。
  • 確認所有預期字段都是預期類型(幾乎總是「字符串」)。這樣,如果惡意用戶修改代碼並在字段名稱的末尾添加「[]」,就不會出現問題,因此PHP會將該字段視爲數組,然後對其執行檢查它是一個字符串。
  • 驗證是否填寫了所有必填字段。
  • 確認所有字段(包括必填字段和可選字段)都已正確填寫(例如,電子郵件地址和電話號碼的格式均爲預期)。
  • 與前一項相關,但值得成爲自己的項目:驗證下拉菜單中的字段是否使用實際位於下拉菜單中的值提交。同樣,用戶可以修改代碼並將下拉菜單更改爲任何他們想要的。
  • 爲了防止用戶有意或無意地包含惡意代碼,對所有字段進行清理。

我不認爲上述任何東西都是矯枉過正的,因爲正如我所提到的,填寫表格的用戶是不可信的。

但是,當涉及到管理員後端時,我不確定所有這些都是必需的。這些是我仍然認爲必要的事情:

  • 驗證是否填寫了所有必填字段。
  • 確認所有字段(包括必填字段和可選字段)都已正確填寫(例如,電子郵件地址和電話號碼的格式均爲預期)。
  • 爲了防止用戶有意或無意地包含惡意代碼,對所有字段進行清理。

我在考慮刪除剩餘的項目,以節省時間和更少的代碼(因此,更多的可讀代碼)。這是一個合理的事情要做還是值得平等對待所有形式,而不管它們是否由可信用戶填寫?

這些是僅有的兩個原因,我可以爲什麼它可能是明智的,平等對待所有形式的想到:

  • 可信用戶的憑證可能是由一個不受信任的用戶被發現。
  • 受信任的用戶的機器可能會感染惡意軟件,並與表單混淆。我從來沒有聽說過這種惡意軟件,並懷疑這是一件真正令人擔憂的事情,但無論如何這都是需要考慮的事情。

謝謝!

+0

根本不需要做出妥協。如果CSRF /表單字段驗證代碼被正確抽象,您應該能夠透明地在所有表單中使用它。如果每次從零開始重新寫入,顯然是一件難以重複的事情。 – deceze

回答

1

不知道所有的細節,很難說。

然而,總的來說,這感覺就像是代碼重用應該是可能的情況。換句話說,感覺這個樣板驗證不需要爲每個獨特的表單重新編寫。相反,我的目標是創建一些可用於任何形式的可重用外部類。

你提到的PHP和可用已經有大量的表單驗證類:

http://www.google.com/search?gcx=w&sourceid=chrome&ie=UTF-8&q=form+validation+php+class

祝您好運!

相關問題