W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
1.2.1【必須】限定/過濾傳入jQuery不安全函數(shù)的變量值
.html()
、.append()
、.prepend()
、.wrap()
、.replaceWith()
、.wrapAll()
、.wrapInner()
、.after()
、.before()
時(shí),如變量值外部可控,應(yīng)對特殊字符(&, <, >, ", '
)做編碼轉(zhuǎn)義。jQuery 1.x(等于或低于1.12)、jQuery2.x(等于或低于2.2)
,且使用$()
時(shí),應(yīng)優(yōu)先考慮替換為最新版本。如一定需要使用,應(yīng)對傳入?yún)?shù)值中的特殊字符(&, <, >, ", '
)做編碼轉(zhuǎn)義。// bad:將不可信內(nèi)容,帶入jQuery不安全函數(shù).after()操作
const { user } = params;
// ...
$("p").after(user);
// good: jQuery不安全函數(shù).html()操作前,對特殊字符編碼轉(zhuǎn)義
function htmlEncode(iStr) {
let sStr = iStr;
sStr = sStr.replace(/&/g, "&");
sStr = sStr.replace(/>/g, ">");
sStr = sStr.replace(/</g, "<");
sStr = sStr.replace(/"/g, """);
sStr = sStr.replace(/'/g, "'");
return sStr;
}
// const user = params.user;
user = htmlEncode(user);
// ...
$("p").html(user);
.attr()
操作a.href
、ifame.src
、form.action
、embed.src
、object.data
、link.href
、area.href
、input.formaction
、button.formaction
屬性時(shí),應(yīng)參考JavaScript頁面類規(guī)范1.3.1部分,限定重定向的資源目標(biāo)地址。.attr(attributeName, value)
時(shí),如第一個(gè)參數(shù)值attributeName
外部可控,應(yīng)用白名單限定允許操作的屬性范圍。$.getScript(url [, success ])
時(shí),如第一個(gè)參數(shù)值url
外部可控(如:從URL取值拼接,請求jsonp接口),應(yīng)限定可控變量值的字符集范圍為:[a-zA-Z0-9_-]+
。1.2.2【必須】限定/過濾傳入Vue.js不安全函數(shù)的變量值
v-html
時(shí),不允許對用戶提供的內(nèi)容使用HTML插值。如業(yè)務(wù)需要,應(yīng)先對不可信內(nèi)容做富文本過濾。// bad:直接渲染外部傳入的不可信內(nèi)容
<div v-html="userProvidedHtml"></div>
// good:使用富文本過濾庫處理不可信內(nèi)容后渲染
<!-- 使用 -->
<div v-xss-html="{'mode': 'whitelist', dirty: html, options: options}" ></div>
<!-- 配置 -->
<script>
new Vue({
el: "#app",
data: {
options: {
whiteList: {
a: ["href", "title", "target", "class", "id"],
div: ["class", "id"],
span: ["class", "id"],
img: ["src", "alt"],
},
},
},
});
</script>
v-bind
操作a.href
、ifame.src
、form.action
、embed.src
、object.data
、link.href
、area.href
、input.formaction
、button.formaction
時(shí),應(yīng)確保后端已參考JavaScript頁面類規(guī)范1.3.1部分,限定了供前端調(diào)用的重定向目標(biāo)地址。v-bind
操作style
屬性時(shí),應(yīng)只允許外部控制特定、可控的CSS屬性值// bad:v-bind允許外部可控值,自定義CSS屬性及數(shù)值
<a v-bind:href="sanitizedUrl" v-bind:style="userProvidedStyles">
click me
</a>
// good:v-bind只允許外部提供特性、可控的CSS屬性值
<a v-bind:href="sanitizedUrl" v-bind:style="{
color: userProvidedColor,
background: userProvidedBackground
}" >
click me
</a>
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: