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

使用Jsencrypt配合axios實現數據傳輸加密

安全 應用安全
對稱加密就是兩邊擁有相同的秘鑰,兩邊都知道如何將密文加密解密。這種加密方式固然很好,但是問題就在于如何讓雙方知道秘鑰。

[[404720]]

本文轉載自微信公眾號「粥里有勺糖」,作者粥里有勺糖。轉載本文請聯系粥里有勺糖公眾號。

背景

不希望應用發送的數據能在 Devtools 中被看到,避免接口被“同行”扒下來,然后被惡意使用

要避免此問題,首先想到的就是對傳輸的數據進行一次加密,讓后端自行解密然后處理

盡管js源碼是被瀏覽器公開的,但通過構建工具混淆后,在沒有source map的情況下還不不易定位目標代碼

期望加密后的樣子傳輸的內容如下

加密方案簡述

對稱加密

對稱加密就是兩邊擁有相同的秘鑰,兩邊都知道如何將密文加密解密。

這種加密方式固然很好,但是問題就在于如何讓雙方知道秘鑰。

由于傳輸數據都是走的網絡,如果將秘鑰通過網絡的方式傳遞的話,一旦秘鑰被截獲就沒有加密的意義

非對稱加密

有公鑰私鑰之分:

  • 公鑰所有人都可以知道,可以將數據用公鑰加密,但是將數據解密必須使用私鑰解密
  • 私鑰只有分發放公鑰的一方才知道

這種加密方式就可以完美解決對稱加密存在的問題

通過對比,選用保密性好的 非對稱加密 方案作為加密方案

本文選用 RSA[1] 對稱加密算法

公私鑰生成

根據百度經驗的建議,生成一個1024位的的秘鑰

這里使用openssl生成,window下建議在Git Bash下使用

私鑰

  1. openssl genrsa -out rsa_1024_priv.pem 1024 

公鑰

  1. openssl rsa -pubout -in rsa_1024_priv.pem -out rsa_1024_pub.pem 

jsencrypt

  • jsencrypt[2]
  • nodejs-jsencrypt[3]

“使用 Javascript 進行RSA加密的解決方案

使用

安裝依賴

  1. # web 
  2. npm i jsencrypt 
  3.  
  4. # node 
  5. npm i nodejs-jsencrypt 

引入

  1. // web 
  2. import JSEncrypt from 'jsencrypt' 
  3.  
  4. // node 
  5. const { JSEncrypt } = require('nodejs-jsencrypt'

公鑰加密方法

  1. // 上述自動生成 
  2. const pubKey = '上述生成的公鑰' 
  3.  
  4. function publicEncrypt(str){ 
  5.     const encrypt = new JSEncrypt() 
  6.     encrypt.setPublicKey(pubKey) 
  7.     return encrypt.encrypt(str) 

私鑰解密方法

  1. const privKey = `上述生成的私鑰` 
  2.  
  3. function privDecrypt(str) { 
  4.     const encrypt = new JSEncrypt() 
  5.     encrypt.setPrivateKey(privKey) 
  6.     return encrypt.decrypt(str) 

可以看出API非常簡潔

使用示例

  1. let str = publicEncrypt('hello world'
  2. console.log(str) 
  3. console.log(privDecrypt(str)) 

結合Axios實踐

Axios配置

  1. npm i axios 

將加密邏輯放入到axios的請求攔截器中,將原內容使用 JSON.stringify處理后再進行加密,加密后的內容使用value屬性傳遞,如下所示

  1. import axios from "axios"
  2.  
  3. // 引入剛剛編寫的加密方法 
  4. import { publicEncrypt } from "./utils/crypto"
  5.  
  6. const http = axios; 
  7. http.defaults.baseURL = '/api' 
  8. http.defaults.headers = { 
  9.   "content-Type""application/json" 
  10. }; 
  11.  
  12. // 請求攔截器 
  13. http.interceptors.request.use( 
  14.   config => { 
  15.     // 發送之前操作config 
  16.     // 對傳遞的 data 進行加密 
  17.     config.data = { 
  18.       value:publicEncrypt(JSON.stringify(config.data)) 
  19.     } 
  20.     return config; 
  21.   }, 
  22.   err => { 
  23.     // 處理錯誤 
  24.     return Promise.reject(err); 
  25.   } 
  26. ); 
  27. http.interceptors.response.use( 
  28.   response => { 
  29.     // 返回前操作 
  30.     return response.data; 
  31.   }, 
  32.   err => { 
  33.     return Promise.reject(err); 
  34.   } 
  35. ); 
  36.  
  37. export default http; 

服務端解密示例代碼

這里列舉了兩種,一種直接使用Node.js的http模塊編寫,一種使用Express編寫:

  1. 解密收到的內容
  2. 將解密后的內容直接返回

http模塊示例

使用data事件與end事件配合,接收傳遞的數據,然后進行解密返回

  1. const http = require('http'
  2.  
  3. // 引入解密方法 
  4. const { privDecrypt } = require('./utils/crypto'
  5.  
  6. const server = http.createServer((req, res) => { 
  7.     res.setHeader('content-type','application/json'
  8.     let buffer = Buffer.alloc(0) 
  9.  
  10.     // 接收傳遞的數據 
  11.     req.on('data',(chunk)=>{ 
  12.         buffer = Buffer.concat([buffer, chunk]) 
  13.     }) 
  14.     req.on('end',()=>{ 
  15.         try { 
  16.             // 解密傳遞的數據 
  17.             const data = privDecrypt(JSON.parse(buffer.toString('utf-8')).value) 
  18.             res.end(data) 
  19.         } catch (error) { 
  20.             console.log(error); 
  21.             res.end('error')             
  22.         } 
  23.     }) 
  24. }) 
  25.  
  26. // 啟動 
  27. server.listen(3000, err => { 
  28.     console.log(`listen 3000 success`); 
  29. }) 

Express示例

配置一個前置的*路由,解密傳遞的內容,然后將其重新綁定到req.body上,供后續其它路由使用

  1. const express = require('express'
  2. const { privDecrypt } = require('./utils/crypto'
  3.  
  4. const server = express() 
  5.  
  6. server.use(express.urlencoded({ extended: false })) 
  7. server.use(express.json({ strict: true })) 
  8.  
  9. // 首先進入的路由 
  10. server.route('*').all((req, res, next) => { 
  11.     console.log(`${req.method}--${req.url}`) 
  12.     req.body = JSON.parse(privDecrypt(req.body.value)) 
  13.     next() 
  14. }) 
  15.  
  16. server.post('/test/demo',(req,res)=>{ 
  17.     // 直接返回實際的內容 
  18.     res.json(req.body) 
  19. }) 
  20.  
  21. // 啟動 
  22. server.listen(3000, err => { 
  23.     console.log(`listen 3000 success`); 
  24. }) 

前端代碼示例

使用了 Vite 作為開發預覽工具

vite.config.js配置: 只做了請求代理,解決開發跨域問題

  1. export default { 
  2.     server: { 
  3.         proxy: { 
  4.             '/api': { 
  5.                 target: 'http://localhost:3000'
  6.                 changeOrigin: true
  7.                 rewrite: (path) => path.replace(/^\/api/, ''
  8.             }, 
  9.         } 
  10.     } 

頁面

  1. <body> 
  2.     <button id="send">發送</button> 
  3.     <hr> 
  4.     <h2></h2> 
  5.     <textarea id="receive" placeholder="接收的內容"></textarea> 
  6.     <script type="module" src="./index.js"></script> 
  7. </body> 

 

 

邏輯

  1. import $http from './http' 
  2. const $send = document.getElementById('send'
  3. const $receive = document.getElementById('receive'
  4.  
  5. $send.addEventListener('click',function(){ 
  6.     // 發送一個隨機內容 
  7.     $http.post('/test/demo',{ 
  8.         name:'xm'
  9.         age:~~(Math.random()*1000) 
  10.     }).then((res)=>[ 
  11.         updateReceive(res) 
  12.     ]) 
  13. }) 
  14.  
  15. function updateReceive(data){ 
  16.     $receive.value = data instanceof Object?JSON.stringify(data):data 

運行結果

頁面

發送網絡請求

請求響應內容

大功告成,接入十分簡單

完整的示例代碼倉庫[4]

外鏈

[1]RSA: https://baike.baidu.com/item/RSA%E7%AE%97%E6%B3%95/263310

[2]jsencrypt: https://www.npmjs.com/package/jsencrypt

[3]nodejs-jsencrypt: https://www.npmjs.com/package/nodejs-jsencrypt

[4]完整的示例代碼倉庫: https://github.com/ATQQ/demos/tree/main/asymmetric-encryption

 

責任編輯:武曉燕 來源: 粥里有勺糖
相關推薦

2011-03-02 11:23:48

2009-05-26 11:24:00

2024-12-31 08:54:38

2009-05-19 17:05:10

2009-04-10 23:40:06

2020-06-12 07:50:15

大數據

2009-12-08 11:17:41

WCF雙向通信

2010-04-07 14:54:38

2010-07-13 15:55:12

FTP數據傳輸模式

2013-11-26 15:51:45

Android編程藍牙數據傳輸

2015-10-14 09:44:55

TCP網絡協議數據傳輸

2023-04-12 16:20:00

同步數據異步數據傳輸

2023-07-12 15:52:28

2021-12-14 11:01:44

TCPUDP網絡協議

2009-07-07 16:46:33

數據傳輸銅纜結構

2021-10-08 08:37:38

數據傳輸數據調用網絡協議

2024-08-05 09:31:00

MySQLDTS數據

2019-09-06 09:11:36

以太網數據二層交換

2017-05-04 12:48:18

WOT網易NDC

2022-03-30 15:06:25

數據傳輸Harmony源碼分析
點贊
收藏

51CTO技術棧公眾號

亚洲综合av一区| 亚洲在线成人精品| 欧美一区二区三区免费观看| 91精品国产91久久久久麻豆 主演| 四虎精品免费视频| 黄毛片在线观看| 国产精品久久久免费| 色一情一乱一乱一91av| 成人免费淫片视频软件| jizz欧美性20| 日本一区二区电影| 国产一区二区三区香蕉| 精品乱码亚洲一区二区不卡| www.射射射| 国产在线观看免费| 国产精品vip| 日韩av在线影院| 亚洲污视频在线观看| 一级黄色片在线看| 无码日韩精品一区二区免费| 欧美视频一区二区三区在线观看 | 日韩福利小视频| 国产精品xxxav免费视频| 久久久国产一区二区三区四区小说 | 日韩综合视频在线观看| 播放灌醉水嫩大学生国内精品| 国产精品欧美亚洲| 影音先锋亚洲精品| 揄拍成人国产精品视频| 丰满人妻一区二区三区免费视频棣| 性欧美gay| 高潮精品一区videoshd| 国产成人av网址| 欧美日韩激情在线观看| 日韩精品dvd| 欧美日韩亚洲视频一区| 中文字幕一区二区三区乱码| 手机看片久久久| 国产精品tv| 欧美一区二区三区小说| 国产精彩免费视频| 五月婷婷伊人网| 亚洲国产电影| 久久伊人精品天天| 亚洲一区日韩精品| av片在线看| 久久久www| 亚洲视频专区在线| 91超薄肉色丝袜交足高跟凉鞋| 国产极品久久久久久久久波多结野| 成人欧美一区二区三区黑人麻豆| 国产精品91在线| 国产精品老女人| 欧美二区不卡| 亚洲爱爱爱爱爱| 中文字幕网av| 欧美大片免费高清观看| 亚洲成人精品一区| 精品无人区一区二区三区竹菊| 久久亚洲精品大全| 久久视频在线观看| 精品久久久久久久久久久院品网 | 欧美一区二区啪啪| 182午夜在线观看| 激情久久99| 国产女同性恋一区二区| 久久综合一区二区三区| 少妇无套内谢久久久久| 六月婷婷一区| 日本一区二区不卡| 五月婷婷视频在线| 国产欧美亚洲一区| 日本精品视频在线观看| 久草免费在线观看视频| 欧美精品日本| 欧美国产一区二区三区| 久久久久久久久久一区二区三区| 亚洲区综合中文字幕日日| 日韩有码在线播放| 国产一区二区播放| 国产 日韩 欧美 综合 一区| 日韩女优电影在线观看| 久久久久久久片| 欧美与亚洲与日本直播| 欧美色图免费看| 成人午夜激情av| 国产精品蜜月aⅴ在线| 欧美日韩精品一二三区| 91精品国产三级| 99热播精品免费| 欧美巨大另类极品videosbest | 免费在线看黄色| 国产91高潮流白浆在线麻豆| av噜噜色噜噜久久| 日批视频免费播放| 久久―日本道色综合久久| 日韩wuma| 99在线无码精品入口| 国产一区高清在线| 国产伦精品一区二区三区照片| 国产日韩欧美中文字幕| 成人av在线影院| 国产精品久久在线观看| 日本少妇全体裸体洗澡| 日韩在线精品| 欧美激情欧美激情| 欧美a视频在线观看| 免费观看成人鲁鲁鲁鲁鲁视频| 亚洲japanese制服美女| 日韩一级片免费看| 国产精品欧美一区喷水| 人妻av无码专区| 国精产品一区二区三区有限公司 | 欧美黑人一区| 欧美一三区三区四区免费在线看 | 国产一区二区三区四区福利| 小泽玛利亚一区二区免费| 亚洲国产免费看| 国产精品精品久久久久久| 精品人妻少妇嫩草av无码专区| 91视频一区二区三区| 成人黄色免费片| 三级网站在线看| 国产精品人成在线观看免费| 久久99中文字幕| 欧美日韩国产网站| 亚洲国产又黄又爽女人高潮的| 1024手机在线观看你懂的| 精品二区视频| 国产区亚洲区欧美区| 视频一区二区在线播放| 成人毛片老司机大片| 亚洲精品一卡二卡三卡四卡| 成人在线高清视频| 亚洲午夜三级在线| av噜噜在线观看| 成人vr资源| 日本韩国在线不卡| 日批免费在线观看| 一区二区三区高清| 涩涩网站在线看| 精品国产一区二区三区久久久蜜臀| 亚洲欧美三级在线| 黄色片视频网站| 国产成a人亚洲| 亚洲欧洲日本国产| 欧美xxxx做受欧美护士| 日韩激情av在线免费观看| 免费在线一区二区三区| 国产自产视频一区二区三区| 日韩福利影院| 免费亚洲电影| 日韩精品中文字幕视频在线| 成人午夜视频精品一区| 成人午夜精品在线| www.av91| 第四色中文综合网| 久久成人这里只有精品| 在线免费观看一级片| 蜜臀久久久久久久| 日韩av一级大片| 欧美1级2级| 一本一本久久a久久精品牛牛影视| 久久久久亚洲天堂| 成熟亚洲日本毛茸茸凸凹| 91免费国产精品| 97青娱国产盛宴精品视频| 久久99国产综合精品女同| 国产这里有精品| 国产一区福利在线| 成人在线免费观看网址| 国产精品原创| 亚洲精品乱码久久久久久金桔影视| 欧美手机在线观看| 国产一区视频在线看| 成人污网站在线观看| 日韩精品久久久久久久软件91| 欧美另类99xxxxx| 丁香六月色婷婷| 欧美日韩精品在线观看| 91久久免费视频| 蜜臀av性久久久久蜜臀aⅴ四虎 | 毛片精品免费在线观看| 久久99国产综合精品免费| 97久久超碰精品国产| 日韩精品视频久久| 久久99高清| 国产欧美亚洲精品| 亚洲丝袜精品| 亚洲成人动漫精品| 30一40一50老女人毛片| 久久亚洲专区| 999视频在线免费观看| 18+视频在线观看| 亚洲福利在线观看| 97人人澡人人爽人人模亚洲| 国产亚洲一区二区在线观看| jizzzz日本| 欧美亚韩一区| 日韩在线第一区| 盗摄牛牛av影视一区二区| 国产精品你懂得| 免费h视频在线观看| 久久最新资源网| 国产在线视频资源| 精品国产一区二区三区av性色| 在线永久看片免费的视频| 一区二区三区四区高清精品免费观看| av亚洲天堂网| 校园激情久久| 日本一级黄视频| 色综合色综合| 欧美久久久久久久| 一区二区三区高清在线观看| 国产精品一久久香蕉国产线看观看| 99久久精品免费看国产小宝寻花| 中文字幕在线日韩| 蜜桃成人在线视频| 亚洲精品成人久久电影| 国产伦一区二区| 欧美日韩二区三区| 日本欧美www| 欧美性高跟鞋xxxxhd| 久久香蕉精品视频| 亚洲激情自拍视频| www欧美com| 亚洲视频在线一区观看| 男人的天堂官网| 2021中文字幕一区亚洲| 国产xxxxxxxxx| 成人看片黄a免费看在线| 免费在线观看日韩av| 国产乱码精品1区2区3区| 色婷婷成人在线| 奇米精品一区二区三区在线观看| 在线视频一区观看| 日韩精品一区二区三区免费观影| 欧美美乳视频网站在线观看| 日韩欧美国产大片| 精品视频第一区| 神马午夜久久| 欧美亚洲丝袜| 国产成人一区二区三区影院| 蜜桃麻豆91| 国产精品中文字幕亚洲欧美| 奇米精品在线| 日韩精品诱惑一区?区三区| 三区精品视频| 欧美hd在线| 视色,视色影院,视色影库,视色网 日韩精品福利片午夜免费观看 | 国产老头老太做爰视频| 中文成人av在线| 老司机深夜福利网站| 综合欧美一区二区三区| 午夜精品一区二区三级视频| 亚洲三级在线看| 欧美精品99久久久| 午夜欧美视频在线观看| 久久精品国产成人av| 日本福利一区二区| 在线观看xxxx| 日韩精品一区二区三区swag| 欧美 日韩 人妻 高清 中文| 日韩极品精品视频免费观看| 久久久久久女乱国产| 日韩专区中文字幕| 欧美日韩色网| 2019亚洲日韩新视频| 羞羞影院欧美| 国产在线视频一区| 成人盗摄视频| 欧美日韩精品不卡| 99九九热只有国产精品| 久久99久久99精品| 久久黄色网页| 伊人成人222| 成人一区二区三区| 香蕉视频久久久| 亚洲欧美经典视频| 天天干天天干天天干天天| 欧美三级中文字幕在线观看| 性做久久久久久久| 亚洲欧美综合图区| 天堂av在线电影| 欧美在线视频播放| 国产人与zoxxxx另类91| 精品伦精品一区二区三区视频| 成人精品影视| 公共露出暴露狂另类av| 香蕉久久夜色精品国产| 污片在线免费看| 99久久精品久久久久久清纯| 欧美xxxx精品| 天天综合色天天| 国产免费高清视频| 亚洲一级黄色片| 精品日韩av| 91精品国产综合久久香蕉最新版 | 91成人在线| 国产一区国产精品| 91精品一区二区三区综合| 久久精品免费一区二区| 国产九色精品成人porny| av永久免费观看| 欧美日韩国产色视频| 99久久精品日本一区二区免费 | 国产丝袜在线| 国产成人午夜视频网址| 福利在线一区| 免费极品av一视觉盛宴| 免费久久99精品国产| 我和岳m愉情xxxⅹ视频| 亚洲综合999| 国产男女猛烈无遮挡| 一区二区三区黄色| 亚洲天堂资源| 好看的日韩精品| 亚洲视频精品| 午夜免费福利网站| 中文字幕亚洲一区二区va在线| 久久久免费高清视频| 亚洲成人精品在线| 欧美人与性动交α欧美精品图片| 国产日韩欧美在线| 国内精品久久久久久99蜜桃| 女人喷潮完整视频| www.亚洲国产| 日产亚洲一区二区三区| 欧美videos中文字幕| 在线免费观看污| 91久久极品少妇xxxxⅹ软件 | 国产成人精品一区二三区四区五区| 在线丨暗呦小u女国产精品| 竹内纱里奈兽皇系列在线观看| 欧美综合在线第二页| 亚洲av无码国产综合专区| 欧美午夜不卡| 日韩av.com| 国产精品日日摸夜夜摸av| 在线观看国产黄| 中文字幕亚洲一区在线观看| 成人自拍视频网| 日韩精品一区二区三区外面| 丝袜诱惑制服诱惑色一区在线观看 | 亚洲三级一区| 精品综合免费视频观看| 97在线观看视频免费| 91精品国产综合久久久久久久久久 | 伊人久久亚洲综合| 日韩中文字幕在线观看| 白嫩亚洲一区二区三区| www.69av| av午夜一区麻豆| 天堂网视频在线| 中国人与牲禽动交精品| 成人自拍视频| 欧美极品少妇无套实战| www.日韩精品| 波多野结衣 久久| 色妞色视频一区二区三区四区| 小说区图片区亚洲| 99在线首页视频| 在线观看日韩av电影| 青青草成人免费视频| 色狠狠综合天天综合综合| www.久久热.com| 91超碰在线电影| 国产欧美在线| a级黄色免费视频| 日韩欧美高清一区| 三妻四妾的电影电视剧在线观看| 日韩av电影免费在线观看| 激情成人午夜视频| 在线不卡av电影| 欧美日韩不卡一区二区| 色操视频在线| 日本一区二区三区www| 精品一区二区三区在线播放视频| 久草视频中文在线| 亚洲另类xxxx| 精品中文字幕一区二区三区四区| 国产精品成人久久电影| 国产午夜精品一区二区三区视频 | 国产在线无码精品| 97精品国产97久久久久久久久久久久| 青青草视频在线观看免费| 亚洲精品成人网| 国产精品久久久久久久久久齐齐| 成人免费看片视频在线观看| 91最新地址在线播放| 97人妻精品一区二区三区动漫| 午夜精品一区二区三区视频免费看| 精品国产18久久久久久二百| 国产黄页在线观看| 中文字幕在线一区| 日韩二区三区| 97碰碰视频| 久久99精品国产.久久久久| 国产成人愉拍精品久久| 久久精品久久久久久国产 免费|