- var data = 'text' - var htmlData = '<script>alert(1)</script><span>script</span>'
例如上面的例子,假如沒有對他進行轉義的話,他仍然是變量的形式,到頁面上就會被執行掉,也就是在頁面上看不出任何不同,在後面進行引用html
- var data = 'text' - var htmlData = '<script>alert(1)</script><span>script</span>' p #{data} p #{htmlData} => <p>text</p> <p><script>alert(1)</script><span>script</span></p>
能夠看出text仍是text的純文本,可是這個htmlData就不同了,他這裏面有尖括號,這個可執行的腳本,html標籤,這裏默認進行了安全轉義,轉成了字符,那麼我就是但願輸出這種不轉義的格式,這個時候要怎麼弄安全
- var data = 'text' - var htmlData = '<script>alert(1)</script><span>script</span>' p !{data} p !{htmlData} => <p>text</p> <p><script>alert(1)</script><span>script</span></p>
- var data = 'text' - var htmlData = '<script>alert(1)</script><span>script</span>' p= data p= htmlData p!= data p!= htmlData => <p>text</p> <p><script>alert(1)</script><span>script</span></p> <p>text</p> <p><script>alert(1)</script><span>script</span></p>
p \#{htmlData} p \!{htmlData} => <p>#{htmlData}</p> <p>!{htmlData}</p>
input(value='#{newData}') => <input value="undefined">
input(value=newData) => <input>