2017-05-17 58 views
0

我很想知道人們是如何處理這個問題的。Ajax調用WebAPI - 如何防止濫發提交按鈕?

我有一個單一的窗體(使用div顯示/隱藏部分,因此它看起來像三頁)和一個提交按鈕的網站。表單通過jQuery AJAX POST提交給我的WebAPI方法。我不希望人們能夠在快速提交中多次發送POST。

我在單擊它時禁用了Submit按鈕,但這並不妨礙有人在控制檯中編寫腳本來反覆調用該方法。他們可以查看JavaScript,查看網址,併發布到它。

我聽說過API密鑰,但我不認爲它們適用於此,因爲沒有登錄到網站。如果有的話,重複請求仍然需要密鑰。

我可以使用CAPTCHA我想......但還有哪些其他選項可用?

回答

0

最有用的東西是在表單內部使用csrf標記。 CSRF令牌將在每個表單提交後更新。

您可以輕鬆地防止重複請求。

在這裏找到 https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet

+0

更多信息,請給一些細節,記住這是一個Ajax後。服務器如何知道具有相同標記的後續POST將被忽略?是否有WebAPI DataAnnotation使用? – VictorySaber

+0

@VictorySaber首次提交後必須更改csrf值並重新生成新的CSRF令牌。這裏有一個鏈接可以讓你知道你如何處理令牌。 https://gist.github.com/ziadoz/3454607 –

+0

假設是客戶端,什麼是阻止某人調用令牌生成方法?例如getToken(); postForm(令牌)在控制檯? – VictorySaber