API學習筆記——使用者註冊api,防止惡意調用

API學習筆記——使用者註冊api,防止惡意調用

資源介紹參數
資源類別: PHP
如遇問題: 聯繫客服/留言反饋
釋放雙眼,帶上耳機,聽聽看~!

Api-2 使用者註冊接口

添加使用者註冊路由

    $api->post('url','UsersController@store'); //使用者註冊

創建api請求驗證類和控制器

    php artisan make:controller name; php artisan make:request name

寫入驗證方法和使用者創建

調用請求類和使用者模型

  • 首先請求類會驗證key是否存在
Cache::get($request->verification_key); 獲取緩存
  • 我們只要在緩存中獲取到key,如果獲取到key那麼驗證碼就已經失效了
if(!緩存){return $this->response->error('驗證碼已失效', 422);}
  • 如果有驗證碼,匹配驗證碼
if (!hash_equals($verifyData['code'], $request->verification_code)){//返回驗證碼匹配失敗,hash_equals可避開時序破解驗證碼}
  • 匹配成功後,講使用者添加到數據庫
User:create(['name']=>$request->name,..,...,)
  • 清除驗證碼 返回OK
Cache::forget($request->..);

POSTMAN測試

模擬獲取key

模擬使用者註冊提交

數據庫檢測使用者

api-3 防止惡意攻擊調用接口

限制api接口調用

中間件api.throttle控制調用頻率

$api->version('v1', [
    'namespace' => 'App\Http\Controllers\Api',
], function($api) {
    $api->group([
        'middleware' => 'api.throttle',
        'limit' => 1,
        'expires' => 1,
    ], function($api) {
        // 短信驗證碼
        $api->post('verificationCodes', 'VerificationCodesController@store')
            ->name('api.verificationCodes.store');
        // 使用者註冊
        $api->post('users', 'UsersController@store')
            ->name('api.users.store');
    });
});

測試

config api文件配置

config配置

'rate_limits' => [
        // 訪問頻率限制,次數/分鐘
        'access' => [
            'expires' => env('RATE_LIMITS_EXPIRES', 1),
            'limit'  => env('RATE_LIMITS', 60),
        ],
        // 登錄相關,次數/分鐘
        'sign' => [
            'expires' => env('SIGN_RATE_LIMITS_EXPIRES', 1),
            'limit'  => env('SIGN_RATE_LIMITS', 10),
        ],
    ],

api 配置 ‘limit’ => config(‘api.rate_limits.sign.limit’),

聲明:本文為原創作品,版權歸作者所有。未經許可,不得轉載或用於任何商業用途。如若本站內容侵犯了原著者的合法權益,可聯繫我們進行處理。

給TA打賞
共{{data.count}}人
人已打賞
3 條回復 A文章作者 M管理員
  1. Spring

    謝謝大佬指導

  2. yangbbs

    api必須加密做限制

個人中心
購物車
優惠劵
今日簽到
有新私信 私信列表
搜尋