<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      php接口簽名驗證

      在做一些api接口設計時候會遇到設置權限問題,比如我這個接口只有指定的用戶才能訪問。
      很多時候api接口是屬于無狀態的,沒辦法獲取session,就不能夠用登錄的機制去驗證,那么
      大概的思路是在請求包帶上我們自己構造好的簽名,這個簽名必須滿足下面幾點:
      a、唯一性,簽名是唯一的,可驗證目標用戶
      b、可變性,每次攜帶的簽名必須是變化的
      c、時效性,具有一定的時效,過期作廢
      d、完整性,能夠對數據包進行驗證,防止篡改

      直接看下面代碼

      <?php
      
      // 設置一個公鑰(key)和私鑰(secret),公鑰用于區分用戶,私鑰加密數據,不能公開
      $key = "c4ca4238a0b923820dcc509a6f75849b";
      $secret = "28c8edde3d61a0411511d3b1866f0636";
      
      // 待發送的數據包
      $data = array(
          'username' => 'abc@qq.com',
          'sex' => '1',
          'age' => '16',
          'addr' => 'guangzhou',
          'key' => $key,
          'timestamp' => time(),
      );
      
      // 獲取sign
      function getSign($secret, $data) {
          // 對數組的值按key排序
          ksort($data);
          // 生成url的形式
          $params = http_build_query($data);
          // 生成sign
          $sign = md5($params . $secret);
          return $sign;
      }
      
      // 發送的數據加上sign
      $data['sign'] = getSign($secret, $data);
      
      /**
       * 后臺驗證sign是否合法
       * @param  [type] $secret [description]
       * @param  [type] $data   [description]
       * @return [type]         [description]
       */
      function verifySign($secret, $data) {
          // 驗證參數中是否有簽名
          if (!isset($data['sign']) || !$data['sign']) {
              echo '發送的數據簽名不存在';
              die();
          }
          if (!isset($data['timestamp']) || !$data['timestamp']) {
              echo '發送的數據參數不合法';
              die();
          }
          // 驗證請求, 10分鐘失效
          if (time() - $data['timestamp'] > 600) {
              echo '驗證失效, 請重新發送請求';
              die();
          }
          $sign = $data['sign'];
          unset($data['sign']);
          ksort($data);
          $params = http_build_query($data);
          // $secret是通過key在api的數據庫中查詢得到
          $sign2 = md5($params . $secret);
          if ($sign == $sign2) {
              die('驗證通過');
          } else {
              die('請求不合法');
          }
      }
      ?>
      
      posted @ 2018-06-11 10:43  Ariphan  閱讀(9968)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产综合色在线精品| 同性男男黄gay片免费| 少妇高潮灌满白浆毛片免费看 | 久久这里只有精品好国产| 国产国语对白露脸正在播放| 在线看无码的免费网站| 国产精品无遮挡猛进猛出| 四虎影视一区二区精品| 男人下部进女人下部视频| 亚洲精品国产综合麻豆久久99| 欧洲精品一区二区三区久久| 日本熟妇色xxxxx日本免费看| 国产精品自拍中文字幕| 亚洲中文字幕一区二区| 久久五月丁香激情综合| 石渠县| 18禁黄网站禁片免费观看| 精品一区二区中文字幕| 亚洲国产成人精品无码区在线观看| 999国产精品999久久久久久 | 亚洲成人资源在线观看| 含紧一点h边做边走动免费视频| 大又大又粗又硬又爽少妇毛片| 久久精品国产九一九九九| 国产精品久久久久久久专区| 国产播放91色在线观看| 亚洲综合一区二区三区在线| 大地资源高清免费观看| 亚洲日韩中文字幕在线播放| 国产自拍一区二区三区在线| 国产在线观看黄| 国产成人一区二区三区在线 | 免费99精品国产人妻自在现线| 午夜av高清在线观看| 亚洲精品有码在线观看| 午夜性色一区二区三区不卡视频 | 日本黄色一区二区三区四区| а∨天堂一区中文字幕| 熟女人妻视频| 九九久久人妻精品一区色| 毛片无遮挡高清免费|