2014-04-17 68 views
0

我正在構建包括使用信用卡在內的註冊表單。我現在正在進行表單驗證,以確保用戶在適當的字段中輸入正確的數據。然而,它讓我思考。依靠Jquery對此表單進行表單驗證是否安全,並且JQuery是否與所有瀏覽器(包括我們最喜歡的IE版本)兼容?表單的Jquery表單驗證

至於一般的領域,如姓名,地址,城市等...我使用JQuery腳本,只是驗證他們是必需的。

我打算用這個來處理信用卡的東西:http://jquerycreditcardvalidator.com/

或者你知道一個更好的解決方案來處理表單驗證,這是非常有效和可靠的與所有主要的瀏覽器?

+2

不要忘記做服務器端驗證。服務器端驗證是強制性的,客戶端驗證「很高興」。 – Halcyon

+0

你可以使用'input required'並修改'input type'屬性,讓瀏覽器驗證它的客戶端,然後再在服務器上驗證。 –

回答

2

銀行和支付處理器相關的人在這裏
根據我的經驗,我做了很多項目符合PCI DDS標準。

標記我的話,你永遠不能依靠客戶端驗證。 jQuery驗證只能幫助消費者避免輸入錯誤,錯過某個字段或忘記信用卡中的數字。用於CC#驗證的Luhn算法大多數CC#驗證器使用只檢查校驗和以避免跳過或錯誤輸入數字(甚至在此情況下它不是100%可靠,它只檢查通常的,常見的錯誤)檢查卡號本身是否有效。另一方面,當黑客掃描你的網站或試圖破解它時,他從不使用他的瀏覽器(和你的jQuery腳本)。他們總是使用瀏覽器模擬腳本,將值(數十,數百,數百萬次嘗試)直接發佈到表單上,避免了HTML機制和JavaScript驗證。您應該始終,始終在服務器端進行驗證。這是必須的。客戶端驗證只是點綴,方便,但決不是安全措施。

此外,許多類型的攻擊可以在您的付款表單上運行,包括SQL注入,XSS攻擊和CSRF攻擊,並且所有這些攻擊都應在服務器端進行處理。

不要依賴Javascript和jQuery的安全性。注意安全!

+0

你說「它不檢查卡號本身是否有效。」但是,一旦我將它傳遞給他們,Authorize.net不會執行驗證部分(有效,接受和拒絕)嗎?我只是確保他們輸入了足夠的數字以便可能是有效的卡片?沒有? –

+1

除非最終提交給支付系統,否則該卡不能「檢查」到銀行。您可以在提交之前檢查它的格式和校驗和的「近似」正確性。你也可以從卡號中猜出卡的類型(比如AmEx或Visa) - 這不是祕密,它的開放信息可以在任何地方找到。我們在每個CC#字段附近都有「正確」圖標。但這只是一個方便。在發送給銀行之前無法百分之百地檢查它,並且只能依賴客戶端檢查程序的任何方式,服務器端檢查都是必須的。像往常一樣。 –