Flask 控制自轉(zhuǎn)義

2021-08-10 17:33 更新

自動(dòng)轉(zhuǎn)義的概念是自動(dòng)轉(zhuǎn)義特殊字符。 HTML (或 XML ,因此也有 XHTML )意義下 的特殊字符是 &> , < , " 以及 ' 。因?yàn)檫@些字符在 文檔中表示它們特定的含義,如果你想在文本中使用它們,應(yīng)該把它們替換成相應(yīng) 的“實(shí)體”。不這么做不僅會(huì)導(dǎo)致用戶疲于在文本中使用這些字符,也會(huì)導(dǎo)致安全問(wèn)題。 (見(jiàn) 跨站腳本攻擊(XSS)

雖然你有時(shí)會(huì)需要在模板中禁用自動(dòng)轉(zhuǎn)義,比如在頁(yè)面中顯式地插入 HTML , 可以是一個(gè)來(lái)自于 markdown 到 HTML 轉(zhuǎn)換器的安全輸出。

我們有三種可行的解決方案:

  • 在傳遞到模板之前,用 Markup 對(duì)象封裝 HTML字符串。一般推薦這個(gè)方法。
  • 在模板中,使用 |safe 過(guò)濾器顯式地標(biāo)記一個(gè)字符串為安全的 HTML ( {{ myvariable|safe }} )。
  • 臨時(shí)地完全禁用自動(dòng)轉(zhuǎn)義系統(tǒng)。

在模板中禁用自動(dòng)轉(zhuǎn)義系統(tǒng),可以使用 {%autoescape %} 塊:

{% autoescape false %}
    <p>autoescaping is disabled here
    <p>{{ will_not_be_escaped }}
{% endautoescape %}

無(wú)論何時(shí),都請(qǐng)務(wù)必格外小心這里的變量。


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

掃描二維碼

下載編程獅App

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

編程獅公眾號(hào)