精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

使用WebAssembly對前端API請求進行簽名

開發 前端
server端處理WebAPI請求的安全問題:請求重放 (eg. 月餅搶購場景中,程序員通過腳本直接訪問接口);參數篡改 (eg. 會話劫持場景中,將應該搶購到的月餅歸屬人改為自己);腳本攻擊 (eg. 綜合前兩種場景,使用技術手段構建的請求進行攻擊,如信息竊取,漏洞攻擊)等。

背景

server端處理WebAPI請求的安全問題:

  1. 請求重放 (eg. 月餅搶購場景中,程序員通過腳本直接訪問接口)
  2. 參數篡改 (eg. 會話劫持場景中,將應該搶購到的月餅歸屬人改為自己)
  3. 腳本攻擊 (eg. 綜合前兩種場景,使用技術手段構建的請求進行攻擊,如信息竊取,漏洞攻擊)
  4. 可信客戶端請求 (eg. 以上所有場景根因均為訪問客戶端不可信并不可證偽)

解決方案

  1. 對請求參數+cnonce (客戶端生成的一次性隨機字符串) 進行hash簽名
  2. 以secret作為鹽值
  3. 將簽名作為header值傳遞給server端
  4. server端在redis中查驗是否已有重復簽名,如有重復直接拒絕請求(防止請求重放)
  5. server端對簽名值進行校驗
  6. 校驗通過之后將該簽名值作為key值,存入redis

總體流程如下圖所示:

代碼示例

前端使用示例(TypeScript Vue3 版本):

  1. <script setup> 
  2. import { onMounted } from "vue"
  3. import initWasm, {sign} from "./pkg/sign.js"; // 通過wasm-pack打包生成的二進制包的入口文件 
  4. import { v4 as uuidv4 } from 'uuid'; // 此示例以生成的UUID作為cnonce隨機字符串 
  5.   
  6. onMounted(async () => { 
  7.     await initWasm() 
  8. }) 
  9.   
  10. const sendRequest = () => { 
  11.     const cnonce = uuidv4() 
  12.     const params: EncryptedParams = { 
  13.         name'John'
  14.         age: 23, 
  15.         breed: 'dog'
  16.         ts: Date.now() 
  17.     } 
  18.     const wasmSignature = sign(JSON.stringify(params), cnonce); 
  19.     ... 
  20.     axios.post(something); 
  21.   
  22. </script> 

 

簽名機制示例,server端接受到請求時,應該同時獲得簽名值以及cnonce一次性字符串,按照下面同樣的簽名順序進行簽名,比對前端傳入的簽名以及server端生成的簽名進行校驗:

  1. const encryptedSign = (message: string, cnonce: string): string => { 
  2.   const secret = 'XXXXXXX' // 該簽名鹽值可以自行生成,生成之后需要重新編譯rust應用,生成新的wasm包 
  3.   const hashDigest = sha256(`${cnonce}|${message}`) 
  4.   const hmacDigest = Base64.stringify(hmacSHA512(hashDigest.toString().toUpperCase(), secret)) 
  5.   return hmacDigest.toString().toUpperCase() 

簽名機制示例 (rust 版本): 

  1. extern crate wasm_bindgen; 
  2.   
  3. use ring::hmac; 
  4. use ring::digest::{Context, SHA256}; 
  5. use data_encoding::BASE64; 
  6. use data_encoding::HEXUPPER; 
  7. use wasm_bindgen::prelude::*; 
  8.   
  9. #[wasm_bindgen] 
  10. pub fn ron_weasley_sign (message: &str, cnonce: &str) -> String { 
  11.     const SECRET: &str = std::env!("SECRET"); 
  12.   
  13.     let mut context = Context::new(&SHA256); 
  14.     context.update(format!("{}|{}", cnonce, message).as_bytes()); 
  15.     let sha256_result = context.finish(); 
  16.     let sha256_result_str = format!("{}", HEXUPPER.encode(sha256_result.as_ref())); 
  17.   
  18.     let key = hmac::Key::new(hmac::HMAC_SHA512, SECRET.as_bytes()); 
  19.     let mac = hmac::sign(&key, sha256_result_str.as_bytes()); 
  20.     let b64_encoded_sig = BASE64.encode(mac.as_ref()); 
  21.     return b64_encoded_sig.to_uppercase(); 

構建rust源代碼,并生成對應的二進制包

首先在項目的github地址

https://github.com/swearer23/ron-weasley 下載源代碼

之后按照README文件的步驟安裝編譯環境(以*nix環境為例)

安裝cargo

由于我們使用cargo作為rust環境的管理器,所以第一步安裝cargo

安裝完成后在命令行輸入cargo -v 查看是否安裝成功

  1. cargo -v # 可能需要重新啟動終端 
  2. Rust's package manager 
  3.  
  4. USAGE: 
  5.     cargo [+toolchain] [OPTIONS] [SUBCOMMAND] 
  6.  
  7. OPTIONS: 
  8.     -V, --version                  Print version info and exit 
  9.         --list                     List installed commands 
  10.         --explain <CODE>           Run `rustc --explain CODE` 
  11.     -v, --verbose                  Use verbose output (-vv very verbose/build.rs output) 
  12.     -q, --quiet                    No output printed to stdout 
  13.         --color <WHEN>             Coloring: auto, always, never 
  14.         --frozen                   Require Cargo.lock and cache are up to date 
  15.         --locked                   Require Cargo.lock is up to date 
  16.         --offline                  Run without accessing the network 
  17.         --config <KEY=VALUE>...    Override a configuration value (unstable) 
  18.     -Z <FLAG>...                   Unstable (nightly-only) flags to Cargo, see 'cargo -Z help' for details 
  19.     -h, --help                     Prints help information 
  20.  
  21. Some common cargo commands are (see all commands with --list): 
  22.     build, b    Compile the current package 
  23.     check, c    Analyze the current package and report errors, but don't build object files 
  24.     clean       Remove the target directory 
  25.     doc, d      Build this package's and its dependencies' documentation 
  26.     new         Create a new cargo package 
  27.     init        Create a new cargo package in an existing directory 
  28.     run, r      Run a binary or example of the local package 
  29.     test, t     Run the tests 
  30.     bench       Run the benchmarks 
  31.     update      Update dependencies listed in Cargo.lock 
  32.     search      Search registry for crates 
  33.     publish     Package and upload this package to the registry 
  34.     install     Install a Rust binaryDefault location is $HOME/.cargo/bin 
  35.     uninstall   Uninstall a Rust binary 
  36.  
  37. See 'cargo help <command>' for more information on a specific command. 

安裝wasm-pack

要構建二進制包,需要一個額外工具 wasm-pack。它會幫助我們把代碼編譯成 WebAssembly 并構建出適用于web環境的wasm包。使用下面的命令可以下載并安裝:

  1. cargo install wasm-pack 

編譯wasm

wasm-pack安裝成功后,執行下面的命令以編譯wasm包

  1. SECRET= wasm-pack build --target=web --release 

<your-secret>替換為你的簽名鹽值

第一次構建和編譯時間會比較長,需要下載依賴的rust庫并編譯,請耐心等待

如果速度仍然很慢,建議更換cargo國內源

更換 cargo 源

在你的cargo文件夾下新建 config 文件

macos中,文件夾地址在 ~/.cargo 

  1. cd ~/.cargo 
  2. touch config 

然后編輯config文件,添加如下內容: 

  1. [source.crates-io] 
  2. registry = "https://github.com/rust-lang/crates.io-index" 
  3. replace-with = 'ustc' 
  4. [source.ustc] 
  5. registry = "git://mirrors.ustc.edu.cn/crates.io-index" 

即可更換為ustc的源

集成

執行wasm-pack命令打包會得到一個名為pkg的文件夾,位于項目的根目錄下

將其放入要使用的前端項目中,即可以像上面代碼示例章節所描述的方式進行集成和調用

附錄

  • rust 項目地址:https://github.com/swearer23/ron-weasley
  • vue3 調用方式示例項目地址:https://github.com/swearer23/harry-porter (內含有secret=123456的wasm包,可以用于示例)

 

 

 

責任編輯:未麗燕 來源: 今日頭條
相關推薦

2023-12-12 07:30:54

IstioWasm前端

2024-10-18 08:17:36

2021-08-30 14:23:05

BlazorHTTP請求

2020-11-09 11:10:56

前端api緩存

2017-02-24 09:30:17

iOS簽名代碼

2023-10-27 10:16:17

前端項目Rust

2020-11-03 08:12:20

WebAssemblyAPI

2019-09-12 18:10:38

HTTPieAPI測試Python

2022-06-02 08:01:11

云原生工具

2024-09-30 09:25:29

2018-07-30 13:29:04

WebAssemblyGo語言

2021-05-09 22:48:40

SQL數據庫變量

2021-06-15 20:59:14

Kubernetes調試容器

2022-08-15 15:16:20

機器學習圖片深度學習

2021-03-05 00:06:12

Docker容器內存

2009-10-22 09:32:51

ghostlinux系統備份

2023-07-13 11:24:14

SQL優化賦值

2021-09-27 16:39:10

PythonGif壓縮

2020-03-27 20:22:53

數據集裝箱網絡

2023-12-06 07:14:28

前端API中間件
點贊
收藏

51CTO技術棧公眾號

九色综合狠狠综合久久| 国产精品毛片一区二区在线看| 一区二区三区**美女毛片| 91久久精品一区二区别| 日韩 欧美 综合| 久久99蜜桃| 欧美一区永久视频免费观看| 国产中文字幕二区| 亚洲麻豆精品| av一区二区久久| 成人免费在线视频网站| 日产精品久久久| 天堂网在线观看国产精品| 亚洲第一精品夜夜躁人人爽| 日韩精品你懂的| 成人女同在线观看| 中文字幕一区不卡| 蜜桃传媒视频第一区入口在线看| 91一区二区视频| 99精品欧美| 久99九色视频在线观看| 亚洲色图欧美色| 色婷婷久久久| 欧美成va人片在线观看| 一本色道久久亚洲综合精品蜜桃| 成人免费网站观看| 一区二区视频在线看| 少妇特黄a一区二区三区| 五月激情婷婷网| 国产精品一区二区三区四区| 国产精品18久久久久久麻辣| 日韩精品视频播放| 欧美日韩一区二区三区四区在线观看| 在线看福利67194| 国产精品一级黄片| 国产成人在线中文字幕| 日韩一区二区在线观看视频| 国内自拍视频一区| 成人福利av| 亚洲第一成人在线| 国产一区二区四区| 任你弄在线视频免费观看| 日韩码欧中文字| 亚洲v国产v在线观看| 精彩国产在线| 久久精品这里都是精品| 免费看成人av| 四虎国产精品永远| 91丨九色丨黑人外教| 国产一区免费在线| 婷婷丁香一区二区三区| 国产乱码精品一区二区三区忘忧草| 国产精品99久久久久久白浆小说| 国产成人综合欧美精品久久| 亚洲国产片色| 8050国产精品久久久久久| 日韩字幕在线观看| 国产欧美一级| 日本久久亚洲电影| www.五月婷婷.com| 麻豆高清免费国产一区| 成人免费在线视频网站| 国产三级第一页| 国产成人免费在线观看| 成人欧美一区二区三区视频| 亚洲国产精品久久久久久久| 国产.欧美.日韩| 精品一区二区三区免费毛片| 图片区 小说区 区 亚洲五月| 不卡视频免费播放| 免费国产在线精品一区二区三区| 久久精品蜜桃| 国产精品毛片大码女人| 一区中文字幕在线观看| 欧美xxxx少妇| 日韩欧美极品在线观看| 成人免费视频久久| 自拍偷拍亚洲图片| 亚洲国产欧美一区| 在线国产视频一区| 香蕉久久网站| 久久久亚洲网站| 你懂的国产在线| 蜜桃av一区二区在线观看| 亚洲aⅴ男人的天堂在线观看| 国产v片在线观看| 91亚洲精品乱码久久久久久蜜桃| 青青草原亚洲| a级网站在线播放| 欧美日韩国产麻豆| 亚洲综合色在线观看| 蜜桃精品视频| 亚洲欧美变态国产另类| 很污很黄的网站| 亚洲区欧美区| 国产狼人综合免费视频| 亚洲a视频在线| 日本一区二区三区在线不卡| 国产成人免费高清视频| 国模精品视频| 在线成人午夜影院| 国产高清自拍视频| 最新欧美人z0oozo0| 欧美亚洲国产视频| 国产不卡av在线播放| 久久亚区不卡日本| 国产尤物av一区二区三区| 久久精品女人天堂av免费观看 | 婷婷综合国产| 亚洲日本中文字幕| 国产精彩视频在线观看| 美女免费视频一区| 动漫一区二区在线| 麻豆视频在线免费观看| 欧美性猛交xxxxx免费看| 色哟哟在线观看视频| 精品一区二区三| 午夜精品视频在线| av中文字幕在线免费观看| 国产欧美一区视频| 黄色av网址在线播放| 国产成年精品| 自拍偷拍亚洲在线| 少妇高潮av久久久久久| 成人黄色av网站在线| 大地资源第二页在线观看高清版| 波多视频一区| 精品国产乱码久久久久久图片| 成人精品一二三区| 日韩成人一级片| 蜜桃av噜噜一区二区三区| cao在线视频| 日韩你懂的在线观看| 中文字幕在线观看2018| 久久精品天堂| 欧美激情专区| 天堂中文av在线资源库| 亚洲高清久久久久久| 久久久久亚洲av成人片| 国产一区91精品张津瑜| 99re99热| 国产精一区二区| 久久视频免费观看| 国产三区在线播放| 亚洲欧美日韩小说| 亚洲自拍第三页| 中文字幕免费精品| 亚洲va久久久噜噜噜| 好吊日视频在线观看| 欧美日韩国产天堂| 欧美激情精品久久久久久免费| 男男视频亚洲欧美| 国产福利片一区二区| 成人动漫视频在线观看| 久久人体大胆视频| 精品国产乱码久久久久久蜜臀网站| 国产精品国产精品国产专区不片| 黄色免费福利视频| 竹菊久久久久久久| 国产精品xxxxx| 浮生影视网在线观看免费| 欧美少妇一区二区| 97在线观看免费高| 成人av影院在线| 两根大肉大捧一进一出好爽视频| 神马久久影院| 国产精品视频公开费视频| 3d成人动漫在线| 9191久久久久久久久久久| 午夜精品一区二区三区视频| 国产91精品一区二区| 少妇人妻在线视频| 欧美精品系列| 91久久精品在线| 暧暧视频在线免费观看| 精品视频久久久久久| 糖心vlog精品一区二区| 亚洲色图在线看| 91精品又粗又猛又爽| 久久国产日本精品| gogogo免费高清日本写真| 中文字幕日韩在线| 国产精品 欧美在线| av激情在线| 精品中文视频在线| 国产普通话bbwbbwbbw| 精品福利樱桃av导航| 日韩视频在线观看免费视频| 久久精品国产第一区二区三区| 日本成人在线不卡| 秋霞蜜臀av久久电影网免费| 欧美激情精品久久久久久蜜臀| 亚州av在线播放| 欧美日韩一卡二卡| 日韩精品一区二区三| 中文字幕av一区二区三区免费看 | 日韩五码电影| 高清欧美性猛交| √新版天堂资源在线资源| 日韩一区二区三| 不卡av电影在线| 夜夜嗨av一区二区三区网页| 一级国产黄色片| 国产一区二区女| 中文字幕永久视频| 亚洲经典自拍| 黄色网zhan| 欧美日韩一区二区三区视频播放| 国产精品swag| 高清不卡一区| 国产成人亚洲综合91精品| 欧美巨大xxxx做受沙滩| 色婷婷av一区二区三区在线观看| 手机在线精品视频| 日韩一本二本av| 136福利视频导航| 在线视频一区二区免费| 日韩网红少妇无码视频香港| 亚洲精品免费播放| 美女视频久久久| 久久精品欧美日韩| 欧美做受喷浆在线观看| 国产成a人亚洲| 亚洲男人天堂2021| 久久精品国产在热久久| 热久久精品国产| 噜噜爱69成人精品| 无码精品a∨在线观看中文| 影音先锋在线一区| 狠狠精品干练久久久无码中文字幕| 日韩激情一区| 日韩色妇久久av| 狠狠做深爱婷婷综合一区| 久久久一本精品99久久精品| 4438全国亚洲精品观看视频| 91免费看片在线| 色综合视频一区二区三区日韩| 国产精品第100页| 二吊插入一穴一区二区| 日产精品久久久一区二区福利| 成人影院在线视频| 2019亚洲男人天堂| 成人美女黄网站| 国产成人鲁鲁免费视频a| 搜成人激情视频| 国产精品第七影院| 成人在线视频免费| 国产美女被下药99| 日韩久久一区| 91传媒视频在线观看| 日韩免费精品| 97se亚洲综合| 红杏一区二区三区| 麻豆精品视频| 国产在线日韩精品| 亚洲精品中文字幕在线| 99久久99热这里只有精品| 黑人巨大国产9丨视频| 一本一道久久a久久精品蜜桃 | 国产午夜久久| 国产成人久久777777| 日本欧洲一区二区| 日本不卡一区二区在线观看| 激情成人综合网| 国产精品果冻传媒| 99国产精品99久久久久久| 素人fc2av清纯18岁| 国产精品女主播av| 2018天天弄| 欧美日韩一二三四五区| 亚洲精品国产无码| 欧美精品在欧美一区二区少妇| 国产女人爽到高潮a毛片| 欧美v亚洲v综合ⅴ国产v| 午夜性色福利视频| 色yeye香蕉凹凸一区二区av| 羞羞污视频在线观看| 97香蕉久久超级碰碰高清版| 日本久久免费| 亚洲r级在线观看| 女同另类激情重口| 先锋在线资源一区二区三区| 一区二区三区在线电影| 国产免费观看高清视频| 免费成人在线观看视频| 深田咏美中文字幕| 中文字幕av不卡| 日本网站在线免费观看| 欧美三片在线视频观看| 亚洲第一天堂在线观看| 亚洲欧美日韩高清| 欧美人与禽性xxxxx杂性| 国产va免费精品高清在线观看| 日韩午夜电影免费看| 精品毛片久久久久久| 天天影视欧美综合在线观看| 131美女爱做视频| 精品一区二区免费视频| 午夜一区二区三区免费| 亚洲女性喷水在线观看一区| 日本视频在线观看免费| 91精品国产综合久久国产大片| 婷婷国产在线| 美日韩精品视频免费看| 欧美日韩视频免费观看| 国产在线观看一区| 一区二区电影在线观看| 日本精品一区二区三区四区| 国产精品 日产精品 欧美精品| av电影网站在线观看| 午夜欧美一区二区三区在线播放| 一级片在线免费观看视频| 亚洲欧美精品伊人久久| av2020不卡| 95av在线视频| 99久久久久国产精品| jizz欧美激情18| 久久精品亚洲国产奇米99| 国产精品19乱码一区二区三区| 欧美日韩国产在线播放网站| 黄色网址在线播放| 欧美在线视频一区| 国产精品久久久网站| 欧美少妇一区二区三区| 久久精品国产77777蜜臀| 亚洲v国产v欧美v久久久久久| 午夜精品久久久久久久| 亚洲第一天堂在线观看| 欧美国产精品va在线观看| 999精品嫩草久久久久久99| 亚洲第一导航| 日本女人一区二区三区| 亚洲成人黄色av| 欧洲国产伦久久久久久久| 日产精品久久久久久久性色| 午夜精品美女自拍福到在线| 自拍偷拍亚洲图片| 男人天堂成人网| 国产一区二区三区四区五区入口 | 91欧美在线| 在线黄色免费看| 日韩一区在线看| 国产精品国产av| 久久夜色精品国产| 日韩欧美一级| 久久精品xxx| 成人av影院在线| 亚洲天堂一区在线观看| 国产视频精品免费播放| 亚洲精品日产| 色播亚洲视频在线观看| 久久精品国产亚洲a| 国产又粗又长又硬| 91精品国产91久久久久久一区二区 | 日韩少妇裸体做爰视频| 亚洲美女在线视频| 日韩欧美精品一区二区综合视频| 日韩一区二区三区资源| 老色鬼精品视频在线观看播放| 91无套直看片红桃在线观看| 欧美日韩精品欧美日韩精品一综合| 日本欧美在线视频免费观看| 91在线观看免费观看| 欧美日韩国产高清| 国产毛片毛片毛片毛片毛片毛片| 狠狠躁天天躁日日躁欧美| 东热在线免费视频| 91精品在线看| 99精品国产在热久久婷婷| 韩国三级hd中文字幕| 欧美精品一级二级三级| 成年人国产在线观看| 久久综合九色99| 麻豆精品一二三| 精品99在线观看| 亚洲精品日韩欧美| 疯狂欧洲av久久成人av电影| 成人精品视频在线播放| 久久综合99re88久久爱| 国产一区二区三区视频免费观看| 欧美激情极品视频| 国产99久久精品一区二区300| 天天影视色综合| 午夜久久久久久久久| aaa在线观看| 国产精品嫩草在线观看| 免费看欧美美女黄的网站| 九九热这里有精品视频| 亚洲人av在线影院| 免费看日产一区二区三区 | 国产亚洲精品女人久久久久久| 精品爽片免费看久久| www.久久久.com| 黄色av网址在线播放| 亚洲精品中文字幕乱码三区| 青青草在线播放| 99久热re在线精品视频| 秋霞午夜鲁丝一区二区老狼| 国产无码精品在线观看| 日韩视频―中文字幕|