成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

產(chǎn)品經(jīng)理:前端實(shí)現(xiàn)網(wǎng)頁防篡改,你會(huì)怎么做?

開發(fā) 前端
正常情況下用戶輸入input框值,就是我們傳遞給后端的值,但是部分瀏覽器插件或者惡意腳本會(huì)更改用戶輸入的值。

如果產(chǎn)品經(jīng)理要求系統(tǒng)中某個(gè)頁面的輸入框做防止篡改處理,你會(huì)怎么做呢?

需求梳理

  • 首先,什么是防篡改?

簡(jiǎn)單來說,就是用戶輸入input框值,我們傳給后端的值就是用戶輸入的

  • 正常情況下用戶輸入input框值,就是我們傳遞給后端的值,但是部分瀏覽器插件或者惡意腳本會(huì)更改用戶輸入的值
  • 常見針對(duì)的是輸入的錢包地址,我們需要防范被瀏覽器插件和惡意腳本更改
  • 因?yàn)閷?shí)現(xiàn)的效果需要對(duì)已有的業(yè)務(wù)無任何侵入性,保證原有業(yè)務(wù)的正常運(yùn)行
  • 這里的需求背景在nuxt2技術(shù)棧

最終效果

  • 業(yè)務(wù)方只需要加上這個(gè)指令就可以

圖片圖片

實(shí)現(xiàn)思路

  • 我們?nèi)绾伪WC對(duì)原有的代碼沒有侵入性,保證不影響原有的功能?對(duì)此我們想到一個(gè)自定義指令,在指令里面操作。但是一般指令都是直接寫在組件里面的,并不是寫在真實(shí)的 input 標(biāo)簽上,對(duì)此,我們要變更我們的指令,讓其去找到真正的 input 標(biāo)簽。
// 通常情況下, 這是一個(gè)Input組件,我們需要給這個(gè)指令找到其真正的 input 標(biāo)簽
<Input v-xxx/>
  • 這里的代碼實(shí)現(xiàn)的是如何找到真實(shí)的 input 標(biāo)簽。

圖片圖片

  • 如何在指令里面發(fā)送請(qǐng)求給后端?對(duì)此,我們?cè)谥噶罾锩媸褂米远x事件,讓真實(shí)的 input 標(biāo)簽綁定上自定義事件
  • 里面涉及2個(gè)知識(shí)點(diǎn)
  1. 如何給綁定過的 input標(biāo)簽解綁事件?
  2. 如何在指令里面調(diào)用請(qǐng)求的方法
  • 問題1答案,我們?cè)谥噶畹墓?jié)點(diǎn)node, 在 vnode綁定上一個(gè)自定義函數(shù),此自定義函數(shù)在解綁事件的時(shí)候在調(diào)用
  • 問題2答案,我們?cè)趘node.context調(diào)用自定義方法tamperFn(); 這里的vnode.context 就是 this,相當(dāng)于我們調(diào)用了 this.tamperFn(); 此處的this就是 Vue實(shí)例 (在下面的代碼事例中有個(gè)屬性 isTrusted 至關(guān)重要)

圖片圖片

圖片圖片

  • 至此,我們已經(jīng)實(shí)現(xiàn)如何不侵入業(yè)務(wù)的情況下找到 input 標(biāo)簽 & 如何在找到的 input 標(biāo)簽綁定事件并且發(fā)送請(qǐng)求出去 & 解綁事件 (有個(gè)核心問題,到目前為止沒有看到如何區(qū)分提交的表單數(shù)據(jù)是用戶寫的還是被瀏覽器插件惡意改的,且繼續(xù)往下看)
  • js 的 event 有個(gè)屬性 isTrusted
  • 點(diǎn)擊鏈接了解 isTrusted[1]

圖片圖片

  • 首先要對(duì)所有的 input 標(biāo)簽使用Object.getOwnPropertyDescriptor 進(jìn)行劫持,找到 input 標(biāo)簽的 set 屬性,此時(shí),當(dāng)變更 input 的輸入值我們都可以監(jiān)控到變化,當(dāng)有js變更input輸入框的值都會(huì)觸發(fā) set 方法。

圖片圖片

  • 上述的功能代碼是一個(gè)完整的 config.js, 啟動(dòng)項(xiàng)目的時(shí)候直接在 nuxt.config.js 加載這個(gè) config.js 即可,業(yè)務(wù)團(tuán)隊(duì)使用一個(gè)指令即可完成需求。

總結(jié)

我們來梳理下流程:

  1. 首先使用Object.getOwnPropertyDescriptor 進(jìn)行劫持所有的 input 標(biāo)簽, 在里面會(huì)觸發(fā)自定義事件dispatchTamper
  2. 自定義事件綁定在真實(shí)的 input 標(biāo)簽上,在瀏覽器執(zhí)行js階段完成了綁定事件。通過 vnode.context 我們可以調(diào)用 Vue.prototype.tamperFn 方法。在 tamperFn 里面拿到 isTrusted 來區(qū)分是不是被篡改的值。
  3. 我們?cè)诮壎?nbsp;input 標(biāo)簽的事情同時(shí),設(shè)置了 node.cusFn = cusFn, 用來解綁事件。

Reference

[1]https://developer.mozilla.org/zh-CN/docs/Web/API/Event/isTrusted: https://link.juejin.cn?target=https%3A%2F%2Fdeveloper.mozilla.org%2Fzh-CN%2Fdocs%2FWeb%2FAPI%2FEvent%2FisTrusted

責(zé)任編輯:武曉燕 來源: 程序員白特
相關(guān)推薦

2013-07-30 17:16:00

產(chǎn)品經(jīng)理

2016-03-19 15:43:12

2010-09-17 15:13:54

2025-04-25 07:15:00

勒索軟件企業(yè)安全

2011-05-18 14:51:43

2023-08-28 08:52:49

監(jiān)聽頁面用戶

2021-05-13 07:32:17

培訓(xùn)代碼同事

2024-08-28 08:38:51

2023-12-14 17:21:28

前端性能優(yōu)化

2012-11-19 10:02:01

cookie poiscookie防篡改cookie

2014-06-20 10:00:20

產(chǎn)品經(jīng)理

2013-07-03 17:07:39

產(chǎn)品產(chǎn)品經(jīng)理產(chǎn)品設(shè)計(jì)

2009-09-01 18:26:35

2009-09-29 16:41:55

2011-07-03 21:13:04

SEO

2016-03-13 17:58:57

2013-06-06 13:17:08

2014-02-17 06:16:43

產(chǎn)品經(jīng)理思維準(zhǔn)備

2012-12-24 09:49:24

產(chǎn)品經(jīng)理產(chǎn)品設(shè)計(jì)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: www.国产视频| 夜夜精品浪潮av一区二区三区 | 在线观看国产 | 一区二区在线 | www.中文字幕.com| 日韩免费1区二区电影 | 日韩一区二区福利视频 | 国产精品久久 | 日韩av一区二区在线观看 | 亚洲福利av | 欧美精品久久久久久久久久 | 欧美aa在线| 久久成人免费 | 毛片一级片 | 人人亚洲 | 中文字幕一二三区 | 精品欧美一区二区精品久久久 | 成人综合视频在线观看 | 久久精品国产99国产精品 | 国产激情精品一区二区三区 | 欧美一区二区视频 | 亚洲网址在线观看 | 日韩精品1区2区3区 爱爱综合网 | 国产久 | 在线观看a视频 | 天堂av免费观看 | 亚洲伊人久久综合 | 黄色操视频 | 日韩欧美一区二区三区免费观看 | 日本不卡在线观看 | 午夜专区 | 国产一区二区三区不卡av | 在线免费观看成年人视频 | 国产成人精品一区二区 | 精品久久香蕉国产线看观看亚洲 | 国产人免费人成免费视频 | 国产精品视频免费观看 | 久久久精品亚洲 | 国产精品成人一区二区 | 欧美成人精品 | 日日拍夜夜|