<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 數據簽名 * * * * * OneBase中的數據簽名安全性驗證分兩種,第一種是無需識別來源的數據驗證(比如驗證登錄后的SESSION是否被修改),第二種是驗證API接口數據安全性(比如客戶端請求數據是否被修改,服務端返回數據是否被修改),此處來講解一下第二種數據簽名驗證流程。 ![](https://box.kancloud.cn/330fad78d79204bc4ce836ff25a43438_1054x801.png) ### 服務端驗證 * * * * * 先來講一下服務端驗證流程,意思就是 客戶端調用接口時,服務端如何知道客戶端請求的數據在請求中途是否被修改或者是否惡意模擬請求接口。 若某接口需要驗證請求數據安全性,則需要啟動數據簽名安全驗證,如下圖。 ![](https://box.kancloud.cn/1a527529eb68739b30f89e90c0a1a9af_1633x344.jpg) 比如此處使用登錄接口做測試,啟動請求數據簽名驗證后,再來看看測試接口的地方。 ![](https://box.kancloud.cn/03be0e99929a73632c63cf00c8f7a5a3_703x449.jpg) 發現比之前多了一項,data_sign,這項參數是必填,也就是此接口必須有數據簽名字段才能請求通過。 下面來看看 data_sign 怎么生成。 ~~~ // 過濾后的數據生成數據簽名 function create_sign_filter($data = [], $key = '') { $filter_data = sign_field_filter($data); return empty($key) ? data_md5_key($filter_data, API_KEY) : data_md5_key($filter_data, $key); } ~~~ 上面這個函數就是生成data_sign的函數,能發現若不傳入 key 則使用了系統自帶的API_KEY 生成,這種一般用于固定的終端角色,比如 咱們的產品 只有咱們內部人員才需要請求接口,這樣的話 就可以不用傳遞key,等開發完成后將API_KEY告知咱們的終端工程師即可。 若咱們平臺做的很大,需要很多人或企業請求咱們的接口咋辦? 很簡單,只需要 維護 人或企業 與 key 的關聯即可,這樣第二個參數就派上了用場,在不同的人或企業生成數據簽名時傳入相關聯的key。 下面來驗證一下 ![](https://box.kancloud.cn/672ea34e023d2b1185f5d264ca1f2302_1475x616.jpg) 上圖報了數據簽名錯誤,因為data_sign是隨便輸入的。。 下面咱們生成一個簽名 ~~~ $data['username'] = 'admin'; $data['password'] = '111111'; dump(data_md5_key($data, API_KEY)); // 輸出結果:016fa798c3446b96521e06d46849d246 ~~~ 然后發現成功了。 ![](https://box.kancloud.cn/6e14a62352c0d3860d985a73b6abd5a8_1478x822.jpg) 若數據在請求中途被修改或者惡意模擬。。比如我將密碼修改為222222 ![](https://box.kancloud.cn/389006ef777e4157573d6d836802df18_1483x617.jpg) 發現數據只要被修改后簽名就提示錯誤,這樣就可以有效的防止別人惡意請求接口,必須拿到咱們的KEY按咱們的要求生成數據簽名才可以驗證通過。 ### 客戶端驗證 * * * * * 現在需要反過來思考,服務端驗證數據安全啦,那么客戶端如何保證數據也是安全的? 下面來看看如何響應數據簽名。 ![](https://box.kancloud.cn/5028f8707be9904646af03a7be0d24ec_1631x254.jpg) 此處選擇是即可自動響應數據簽名,比如登錄接口啟動響應數據簽名后。 ![](https://box.kancloud.cn/04649d864aa8b905d060ea2011849457_1484x828.jpg) 到這一步服務端的任務已經完成了,下面就來看客戶端如何表演咯。 比如下面使用PHP代碼模仿客戶端校驗。 ~~~ $data['member_id'] = 1; $data['nickname'] = 'admin'; $data['username'] = 'admin'; $data['create_time'] = '2018-01-31 17:25:52'; dump(data_md5_key($data, API_KEY)); // 輸出結果:b3bf7ba6416a3d924dab88862d4d6128 ~~~ 使用服務端返回的數據按照指定的KEY與算法進行處理后還原了數據簽名,客戶端需要比較自己生成的簽名與服務端跟數據一起響應的數據簽名是否一樣,若一樣則驗證通過 執行后續操作,若不一樣則存在安全隱患應該終止后續操作。 這就是 OneBase API模塊中的數據安全性雙向簽名驗證,保證數據安全性。^_^
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看