摘要:解決方案實現(xiàn)轉(zhuǎn)義解碼獲取實體借助和函數(shù)來轉(zhuǎn)譯方法獲取設(shè)置的是匹配元素的文本內(nèi)容,且會將中的預(yù)留字符如大于號轉(zhuǎn)換成字符實體,以便于正確顯示方法是獲取設(shè)置匹配元素的內(nèi)容。實現(xiàn)轉(zhuǎn)譯編碼解碼
背景:
做快站項目遇到的一個bug,一圖勝千言,bug如下圖:
這個問題只在某些帳號下出現(xiàn),絕大數(shù)其他帳號都是正常的,正常情況下是這個樣子的:
為啥會因帳號而已呢?猜測是因為前端渲染模板所用的數(shù)據(jù)惹得禍 :(
分析查看DOM結(jié)構(gòu):
正常情況下,藍(lán)框內(nèi)的所有li標(biāo)簽應(yīng)該都在紅筐內(nèi)。
再看渲染模板用的數(shù)據(jù):
果然,數(shù)據(jù)里面含有html標(biāo)簽,可我在渲染模板之前沒有做轉(zhuǎn)義處理,恩,XSS攻擊就是這么來的。
解決方案jQuery 實現(xiàn)html轉(zhuǎn)義
function htmlEncode(value){ return $("").text(value).html(); } //Html解碼獲取Html實體 function htmlDecode(value){ return $("").html(value).text(); }
借助text()和html()函數(shù)來轉(zhuǎn)譯html
text() : 方法獲取/設(shè)置的是匹配元素的文本內(nèi)容,且會將HTML中的預(yù)留字符(如大于號(>))轉(zhuǎn)換成html字符實體,以便于正確顯示.
html(): 方法是獲取/設(shè)置匹配元素的html內(nèi)容。
javascript 實現(xiàn)html轉(zhuǎn)譯
//編碼 function html_encode(str) { var s = ""; if (str.length == 0) return ""; s = str.replace(/&/g, ">"); s = s.replace(//g, ">"); s = s.replace(/ /g, " "); s = s.replace(/"/g, """); s = s.replace(/"/g, """); s = s.replace(/ /g, "
"); return s; } //解碼 function html_decode(str) { var s = ""; if (str.length == 0) return ""; s = str.replace(/>/g, "&"); s = s.replace(//g, ">"); s = s.replace(/ /g, " "); s = s.replace(/"/g, """); s = s.replace(/"/g, """); s = s.replace(/
/g, " "); return s; }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/82928.html
摘要:一些有用的一些有用的,包括轉(zhuǎn)換小箭頭三角形媒體查詢等中文指南是當(dāng)下最熱門的前端資源模塊化管理和打包工具。 nodejs 入門 nodejs 入門教程,大家可以在 github 上提交錯誤 2016 年最好用的表單驗證庫 SMValidator.js 前端表單驗證工具分享 淺談前端線上部署與運維 說到前端部署,可能大多數(shù)前端工程師在工作中都是使用的公司現(xiàn)成的部署系統(tǒng),與SRE對接、一起完...
摘要:一些有用的一些有用的,包括轉(zhuǎn)換小箭頭三角形媒體查詢等中文指南是當(dāng)下最熱門的前端資源模塊化管理和打包工具。 nodejs 入門 nodejs 入門教程,大家可以在 github 上提交錯誤 2016 年最好用的表單驗證庫 SMValidator.js 前端表單驗證工具分享 淺談前端線上部署與運維 說到前端部署,可能大多數(shù)前端工程師在工作中都是使用的公司現(xiàn)成的部署系統(tǒng),與SRE對接、一起完...
摘要:由兩部分組成模板起始符,稱為沉音符反引號,其內(nèi)容被識別為字符串模板。其實這是通過屬性操作中的結(jié)果,也就是說屬性將對控制符進(jìn)行轉(zhuǎn)義從而實現(xiàn)按照普通字符輸出。的語法是緊跟在后面,兩者間不能有空格或制表符等。 1. Brief ES6(ECMAScript 6th edition)于2015年7月份發(fā)布,雖然各大瀏覽器仍未全面支持ES6,但我們可以在后端通過Node.js 0.12和io....
現(xiàn)在很多都用到Tab 選項卡切換效果,例如點擊切換、滑動切換、延遲切換、自動切換等多種效果,本篇文章講述的就是通過原生 Jquery 來實現(xiàn) Tab 點擊切換的效果。 例如: html <body> <divstyle="position:relative;margin-top:56px;display:flex;justify-content:space...
閱讀 1125·2021-11-24 09:38
閱讀 3229·2021-11-19 09:56
閱讀 2955·2021-11-18 10:02
閱讀 721·2019-08-29 12:50
閱讀 2566·2019-08-28 18:30
閱讀 859·2019-08-28 18:10
閱讀 3659·2019-08-26 11:36
閱讀 2640·2019-08-23 18:23