2014-01-13 47 views
1

我已經設置了一個相當複雜的HTML表單,它使用帶有幾個必填字段和各種規則的JQuery Validate插件。表格工作很好。它發佈到一個單獨的PHP處理器文件,該文件執行許多事情,例如發送幾封電子郵件並最終將用戶發送到PayPal。 (這是一個俱樂部會員申請。)看起來它只花了大約一週的時間來找到處理器文件並開始直接反覆運行。大約500封電子郵件&應用程序在我捕獲之前生成,並通過暫時重命名文件來停止它。當時發生的事情我不太確定究竟發生了什麼,但是在評估了大部分時間之後,我意識到它不可能是主要形式被執行的結果,而是僅僅由於直接運行處理器文件。如何保護表單處理器腳本文件?

所以......我的問題是這樣的:我怎樣才能防止這種情況發生?必須包含某種類型的編碼,以確保處理器無法運行,除非它確實來自真正的HTML表單...或者有更好的方法嗎?我關注了「網上關於表格和發佈」的所有「示例」,但我沒有看到任何與此類問題有關的東西。

+0

你可以某種類型的驗證碼添加到形式,使其傻瓜「大多數'機器人。 http://www.google.com/recaptcha – Rottingham

+0

就是這樣......主要的形式並未運行。我想添加一個驗證碼,直到我意識到這不是發生的事情。不知何故,機器人發現了POST PHP文件,並且正在運行* that *而沒有運行真正的表單。 – RCurtis

+0

這個想法是,服務器端表單處理將需要一個有效的驗證碼值。如果機器人直接擊中處理器,則驗證碼值將無效,並且提交將被拒絕。這可能會有所幫助:[如何防止機器人自動填充表單](http://stackoverflow.com/questions/2387496/how-to-prevent-robots-from-automatically-filling-up-a-form) – showdev

回答

1

通常,可以通過向表單添加CSRF令牌來降低這一點。

爲會話設置一個隨機的sha/md5值,並在表單中將該值設置爲隱藏輸入,當合法用戶發送表單時該值也將被傳遞,驗證並檢查傳遞的值在會議中的一個。如果一切都是好的過程。

如果它是一個bot,機器人需要首先解析CSRF令牌的表單。或者你可以加強並使該安全密鑰成爲圖像並讓用戶鍵入它(驗證碼)。

How to properly add CSRF token using PHP

它的東西,你也應該添加到您的登錄表單ECT,否則你有機器人暴力破解那裏到底。

0

也許你可以在表單頁面上添加一個$_SESSION[]全局變量。然後在處理頁面上檢查它並在執行後取消設置。聽起來像對我最簡單的方式,但你應該聽聽別人的建議。您可以在這裏找到有關$_SESSION[]變量的文檔PHP $_SESSION

0

在生成頁面時向表單添加令牌並將其保存到會話中。

當您獲得發佈數據時,請檢查會話中的令牌。

而且您可能想要使用CAPTCHA代碼來保護您自己的機器人。