日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

DataV分享頁Token參數簽名校驗

本文介紹在發布DataV數據可視化大屏如何使用Token參數簽名校驗。通過Token參數簽名校驗功能,您可以對大屏交互時傳遞的參數進行簽名鑒權,保證大屏的URL訪問鏈接的參數不能被篡改,從而提高大屏數據以及用戶信息的安全性。

前提條件

在使用Token參數簽名校驗前,請確保:

  • 數據可視化大屏使用Token驗證的方式進行發布,具體請參見發布PC端可視化應用

  • 數據可視化大屏以Get的方式在URL中傳遞參數(直接在URL后面加參數)。

  • 數據可視化大屏URL中傳遞的參數要求不能被篡改。

使用場景

下文以一個示例說明Token參數簽名校驗的使用背景。

某用戶的系統嵌入了DataV數據可視化大屏,URL通過Token計算,通過Get方式傳遞用戶的工號給數據可視化大屏展示相對應的數據,可以使用https://datav.aliyuncs.com/share/xxx?_datav_time=1556022195845&_datav_signature=%2BDZFj3QDIla%2F00fBZLdJMgk2Z1Ocs9MLL1******%3D&workid=123來訪問數據可視化大屏。

其中workid(工號)為數據可視化大屏傳遞的參數,存在被篡改的可能。比如工號為123的員工將URL改成https://datav.aliyuncs.com/share/xxx?_datav_time=1556022195845&_datav_signature=%2BDZFj3QDIla%2F00fBZLdJMgk2Z1Ocs9MLL1******%3D&workid=124,就可以看到工號為124的員工的資料。因此需要對用戶傳遞的參數進行簽名鑒權,保證計算得到的URL的參數不能被更改,如果私自更改了傳參,頁面將無法訪問。

參數規則

需要加入簽名的參數,其參數名需以datav_sign_開頭,后面可以帶任何有效的參數名字符。由此可得此參數名的正則表達式為/^datav_sign_.*/

說明

不符合簽名參數規則的參數,將不會進行參數簽名校驗,允許修改參數值。簽名參數按升序排序。

帶簽名參數的URL計算

Node.js代碼示例如下。

const crypto = require('crypto');
const querystring = require('querystring');
const signedQueryParamReg = /^datav_sign_.*/;  // 符合此正則表達式的參數是需要簽名的。

const token = "93TWnmeBtxxxxxxxxxx3thGyAgzennsS";
const screenID ="b92xxxxxxxxxxxxxxxxxx27b4c538cd4";
const time = Date.now();

const customeParams = {
  datav_sign_no: 123998,
  name: 123
};
let signParamsStr = Object.keys(customeParams)
  .filter(paramName => customeParams[paramName] && signedQueryParamReg.test(paramName))
  .sort()
  .map(param => `${param}=${customeParams[param]}`)
  .join('&');
let stringToSign = [screenID, time];
signParamsStr && stringToSign.push(signParamsStr);
stringToSign = stringToSign.join('|');
let signature = crypto.createHmac('sha256', token).update(stringToSign).digest().toString('base64');
let queryParams = {
  _datav_time: time,
  _datav_signature: signature
};

Object.keys(customeParams).forEach(paramName => {
  queryParams[paramName] = customeParams[paramName];
});

let url = `https://datav.aliyuncs.com/share/${screenID}?${querystring.stringify(queryParams)}`;
console.log(url);

使用以上代碼示例得到的URL為:https://datav.aliyuncs.com/share/b92db8e09358c82efca0727b4c538cd4?_datav_time=1556023246894&_datav_signature=GGSbvxlemUeBoRVco8JgrJVWRcmao7NuRYt2O******%3D&datav_sign_no=123998&name=123。在URL的有效期內,如果修改了datav_sign_no字段的值,鏈接將無法訪問;如果修改了name字段的值,鏈接仍然可以訪問,因為datav_sign_no符合參數規則,參與了簽名計算,而name不符合簽名參數規則,不會進行簽名計算。

使用流程

  1. 確定需要簽名計算的參數名(即不允許被篡改的參數)。

  2. 在數據可視化大屏開發完成后,使用Token驗證的方式發布數據可視化大屏,具體請參見發布PC端可視化應用

  3. 參見帶簽名參數的URL計算,計算數據可視化大屏的URL。

  4. 使用上一步中計算得到的URL訪問數據可視化大屏,在訪問過程中,系統會自動進行參數簽名校驗。

    如果參數簽名校驗功能正常,當您修改了簽名參數,再次訪問此URL時,訪問會被拒絕。