2010-06-08 40 views
0

我使用php + jQuery進行驗證碼驗證,稍後發送郵件並執行其他操作。僞代碼是這樣的:php + jquery + captcha,這是正確的方法嗎?

captcha_code = jQuery.post(.....execute captcha script and get status) 
if(captcha_code == "correct"){ 
    send_mail_using_php_script; 
} 

現在我不知道是否垃圾郵件發送者可以直接執行「send_mail_using_php_script」。他們呢?如果是,那麼我應該在send_mail_using_php_script中移動驗證碼驗證以使其更安全?還有其他更安全的方法嗎?

Prashant

+0

如果您使用了預先打包的驗證碼解決方案,是不是有關如何執行此操作的示例?你正在使用哪個驗證碼? – 2010-06-08 18:02:05

回答

0

驗證碼的重要性在於驗證發生在服務器上。 這是記住最重要的部分。

1

驗證應該在服務器端完成。雖然通過隱晦的安全措施可以對付垃圾郵件機器人,但客戶端上的任何內容都是公平的遊戲。

而在客戶端驗證的驗證碼卻失敗了。

+0

我正在使用自定義驗證碼腳本。服務器端是什麼意思?我是網絡編程新手,請耐心等待。 – user354051 2010-06-08 18:22:15

+0

在服務器端,我的意思是,在這種情況下,PHP處理程序。發送郵件的腳本不應運行,除非提交了有效的驗證碼響應。 Web開發的第一條規則是:不要相信用戶的輸入。 如果您在客戶端進行驗證,使用javascript,那麼阻止某人調整代碼並將您變成垃圾郵件分發器的做法並不多。 – user358390 2010-06-08 18:30:32

0

您正在驗證服務器端的實際驗證碼,但您正在驗證結果並指示在客戶端發送郵件。這是錯誤的。 JavaScript/jQuery在客戶端機器上運行,並且可以由最終用戶以他/她喜歡的方式修改。最終用戶可以例如刪除if語句,或者始終評估true並重新執行代碼。

在處理表單提交期間,您需要指示在服務器端發送郵件。

+0

好的,如果我在「send_mail_using_php_script」中移動驗證碼驗證會怎麼樣。我會將在輸入中輸入的驗證碼和電子郵件地址傳遞給腳本。第一個腳本將驗證驗證碼,如果它是正確的,然後發送一封郵件。我認爲這兩種方式都在服務器端發生。我對麼? – user354051 2010-06-08 19:25:22

+0

是的,這是正確的。 – BalusC 2010-06-08 19:37:01

相關問題