2011-09-22 44 views

回答

9

您必須同時做到這兩點。客戶端驗證可以防止所有輸入,而服務器端(包括在打到數據庫之前的代碼中),以防止更多的惡意嘗試。

因此,在ASP.NET中,至少應該使用內置的驗證器控件,如果需要,它們會發出JavaScript。然後,在單擊提交按鈕時發生的服務器端事件中,檢查Page.IsValid以確保JavaScript未被繞過。接下來,確保您使用參數化查詢來防止SQL注入。最後,如果一切都失敗,則始終使用約束來確保數據的正確性。

+0

是的,這是正確的+1 – MStp

+0

*其中一個我希望我可以++ 1 * – rlemon

0

我想這取決於你是否從另一個應用程序寫入數據庫。我是在數據庫級別以及客戶端應用程序級別實施數據限制的主要支持者,因爲您不知道何時需要編寫隨機腳本以批量導入不同來源的數據等。

+1

服務器端驗證應始終完成。 – MStp

1

因爲:

1)如果您允許Web表單通過無效輸入,則會浪費帶寬。如果你允許數據庫接受無效輸入,它完全錯誤,因爲你冒險破壞數據(例如,當JavaScript驗證的時候)失敗或錯過的東西)

+0

今天感覺慷慨+1每個有效的答案。 – MStp

1

真的這取決於你在找什麼。如果你想要的東西很快而且非常負載,那麼使用Javascript是最好的方法,因爲沒有往返服務器和客戶端的等待時間。缺點是Javascript可能被禁用。這意味着你也必須在你的ASP中進行驗證。除了關係數據庫所需的數據庫之外,我不會在數據庫中使用約束,因爲這隻會使您的站點中斷。

+0

今天感覺慷慨+1每個有效的答案。 – MStp

1

的一般規則提交通過網絡形式的數據時,是你必須驗證在服務器端,你還可以驗證客戶端。

如果「SQL與JavaScript」是指服務器與客戶端,SQL是必須的; JavaScript是可選的,但在現代應用程序中您可以驗證以避免往返於服務器。請注意,您可以在數據庫之外執行服務器端驗證,但在許多情況下,用您的話來說,「佔用SQL Server的力量」是適當的。

+0

今天感覺慷慨+1每個有效的答案。 – MStp

2

我會建議在客戶端和服務器端,因爲潛在的人可能會禁用Javascript並仍然能夠提交無效內容。

我會建議要麼在您的服務器端(在您的操作),然後在您的客戶端JS寫約束;或者您可以查看ASP.Net MVC,它允許您在模型類(.cs)中編寫驗證,然後通過AJAX形式自動執行客戶端驗證。

+0

今天感覺慷慨+1每個有效的答案。 – MStp