vue中的v-html,v-text,{{}}三種渲染模板

Ace.鬥皇發表於2020-01-14

1. v-html:存在安全性問題。

<input v-model='password' id='password' text='password' placeholder='這是輸入的密碼'/>
<div>請輸入富文字內容:</div>
<div v-html='msg'></div>

<!--
當使用者輸入:`<img  src='一個不存在的圖片地址.png' onerror='console.log(document.getElementById("password").value)'/>`
但這個輸入內容填充在v-html='msg'時,就會執行圖片,但是因為圖片地址是不存在的,
所以會執行報錯onerror,此時會列印使用者的密碼/或者將使用者密碼傳送到別人伺服器上,即存在安全問題
-->

2. {{msg}}:當頁面渲染過大過慢時,會出現從{{msg}}一閃而過之後消失,重新渲染msg的體驗。

3. v-text:相對比較安全,且不會出現{{msg}}一閃而過之後消失,重新渲染msg的體驗,但是使用其他不如{{msg}}方便。

相關文章