2008-10-06 25 views
2

什麼是每個人最喜歡的方式來消毒用戶數據?最喜歡的Web表單驗證技術

我一直在使用Javascript,但最近需要一些更安全的東西(畢竟人們可以關閉它),所以我在看Flex,但認爲我會問社區他們的想法。

回答

4

從來沒有永遠不會使用JavaScript 或任何其他客戶端技術只有驗證。您可以使用客戶端驗證來保存服務器上的一些負載,或者通過在驗證失敗時更快地顯示錯誤來讓您的應用看起來更具響應能力,但您應該使用服務器端代碼驗證總是

就我個人而言,我喜歡ASP.Net驗證控件,因爲它可以爲您提供客戶端驗證和服務器端安全性的好處,而無需編寫兩次邏輯。當然,股票控制是相當裸露的,但你可以擴展它們。

0

建議同時使用服務器端和客戶端驗證。 我使用JQuery進行客戶端驗證。

1

根據您的項目要求,您可能會也可能不想實施客戶端驗證。但是,服務器端驗證應始終執行。我更喜歡白名單列出適當的輸入和值,而不是列出黑名單中的無效數據,因爲這可以確保沒有人會因爲我沒有考慮到的東西而滑倒某些東西。

3

驗證應始終在服務器端完成。此外,它在客戶端做的很好。

你怎麼做取決於你的應用程序的寫入。任何語言應該能夠處理驗證;所使用的邏輯是重要的,而不是語言。

這也取決於你在處理你的數據。將其放入URL或將其存儲在SQL數據庫中需要兩種截然不同的清理。如果可能的話,白名單有效值 - 不要黑名單無效值。有人總是能夠想出一個你沒有考慮過的新的錯誤輸入。

1
  • 始終使用服務器端驗證至少是
  • 使用正則表達式

PHP實例:

preg_match('/^[\w][\w\,\-\.]*\@[\w]+[\w\-\.]*$/', $_GET['email'], $matches); 
if (count($matches) > 0) { 
    $_GET['email'] = $matches[0]; 
} else { 
    die('invalid email address'); 
} 
+0

但RFC 2821中表示從來沒有要任何人的宿主服務器驗證用戶名部分中的任何內容,例如@ anyhost.com是一個有效的smtp地址!) – roenving 2008-10-06 21:54:27