- 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>