所以,我打算將我的后端與前端完全分離。我正在學習 Laravel/Lumen API,我打算以 JSON 格式返回數據庫數據以供前端開發人員使用。我在 Stack Overflow 上讀過幾個類似的帖子,并觀看了一些 YouTube 視頻。他們中的大多數人建議我應該為“授權”用戶生成一個令牌。然而問題是我的項目沒有登錄系統。我的所有用戶都是訪客用戶。因此,我不能先授權一個人,然后為他們生成令牌。據我了解(可能有缺陷),Laravel API 遵循 RESTful 系統。因此,它是無狀態的,我無法使用 CSRF 令牌來檢查請求是否來自提交的表單,并且它不是自動化的。那么,我還有什么其他選擇呢?我想要將自動請求與來自表單的請求分開的原因是,有時我必須對某些請求進行繁重的處理,并且我不希望自動腳本發送大量請求并導致 DOS 攻擊。任何幫助表示贊賞。
1 回答

白板的微信
TA貢獻1883條經驗 獲得超3個贊
速率限制可以幫助防止自動腳本。Laravel 默認通過 Throttle 中間件實現此功能。默認油門比例為 60:1,throttle:60,1如果 1 分鐘內記錄了 60 次嘗試,則轉換為油門。
該中間件適用于所有路由,但是,您可以針對各個路由覆蓋此中間件并定義嘗試次數和時間的自定義值。以下示例改編自文檔,如果 1 分鐘內有 30 次嘗試,則配置限制路由:
Route::middleware('auth:api', 'throttle:30,1')->group(function () {
Route::get('/user', function () {
//
});
});
還有其他配置選項,請參閱文檔以獲取更多信息。
https://laravel.com/docs/7.x/routing#rate-limiting
Laravel 如何檢查訪客用戶是否發送了太多請求?
用非常基本的術語來說,Laravel 通過應用程序緩存中的特定 IP 來跟蹤特定端點/域的命中。請求域和IP用作緩存鍵。每次命中端點時,存儲在緩存中的嘗試次數都會增加。如果在路由應用的配置中指定的時間窗口內嘗試次數達到允許嘗試的最大次數throttle,則該 IP 將被鎖定一段時間。
如果時間窗口內沒有新的點擊,嘗試將自動清除。
- 1 回答
- 0 關注
- 198 瀏覽
添加回答
舉報
0/150
提交
取消