国产chinesehdxxxx野外,国产av无码专区亚洲av琪琪,播放男人添女人下边视频,成人国产精品一区二区免费看,chinese丰满人妻videos

HTML 轉(zhuǎn)義

2018-02-24 15:39 更新

當(dāng)從模板生成 HTML 時(shí),始終有這樣的風(fēng)險(xiǎn):變量包含影響已生成 HTML 的字符。有兩種 解決方法:手動(dòng)轉(zhuǎn)義每個(gè)字符或默認(rèn)自動(dòng)轉(zhuǎn)義所有的東西。

Jinja 兩者都支持,使用哪個(gè)取決于應(yīng)用的配置。默認(rèn)的配置未開(kāi)啟自動(dòng)轉(zhuǎn)義有這樣幾個(gè) 原因:

  • 轉(zhuǎn)義所有非安全值的東西也意味著 Jijna 轉(zhuǎn)義已知不包含 HTML 的值,比如數(shù)字,對(duì) 性能有巨大影響。
  • 關(guān)于變量安全性的信息是易碎的??赡軙?huì)發(fā)生強(qiáng)制標(biāo)記一個(gè)值為安全或非安全的情況, 而返回值會(huì)被作為 HTML 轉(zhuǎn)義兩次。

使用手動(dòng)轉(zhuǎn)義

如果啟用了手動(dòng)轉(zhuǎn)義,按需轉(zhuǎn)義變量就是?你的?責(zé)任。要轉(zhuǎn)義什么?如果你有 一個(gè)?可能?包含?>?、??、?&?或?"?字符的變量,你必須轉(zhuǎn)義 它,除非變量中的 HTML 有可信的良好格式。轉(zhuǎn)義通過(guò)用管道傳遞到過(guò)濾器?|e?來(lái)實(shí)現(xiàn):?{{?user.username|e?}}?。

使用自動(dòng)轉(zhuǎn)義

當(dāng)啟用了自動(dòng)轉(zhuǎn)移,默認(rèn)會(huì)轉(zhuǎn)移一切,除非值被顯式地標(biāo)記為安全的??梢栽趹?yīng)用中 標(biāo)記,也可以在模板中使用?|safe?過(guò)濾器標(biāo)記。這種方法的主要問(wèn)題是 Python 本 身沒(méi)有被污染的值的概念,所以一個(gè)值是否安全的信息會(huì)丟失。如果這個(gè)信息丟失, 會(huì)繼續(xù)轉(zhuǎn)義,你最后會(huì)得到一個(gè)轉(zhuǎn)義了兩次的內(nèi)容。

但雙重轉(zhuǎn)義很容易避免,只需要依賴(lài) Jinja2 提供的工具而不使用諸如字符串模運(yùn)算符 這樣的 Python 內(nèi)置結(jié)構(gòu)。

返回模板數(shù)據(jù)(宏、?super?、?self.BLOCKNAME?)的函數(shù),其返回值總是被標(biāo)記 為安全的。

模板中的字符串字面量在自動(dòng)轉(zhuǎn)義中被也被視為是不安全的。這是因?yàn)榘踩淖址?一個(gè)對(duì) Python 的擴(kuò)展,而不是每個(gè)庫(kù)都能妥善地使用它。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)