网上很多文档提到一个JS利用DOM特性作HTMLDecode的方法:
function
HTMLDecode(strEncodeHTML)
{
var div = document.createElement( ' div ' );
div.innerHTML = strEncodeHTML;
return div.innerText;
}
{
var div = document.createElement( ' div ' );
div.innerHTML = strEncodeHTML;
return div.innerText;
}
这个函数是不安全的,如果参数带有用户输入,就可能导致执行JS代码:
function
HTMLDecode(strEncodeHTML)
{
var div = document.createElement( ' div ' );
div.innerHTML = strEncodeHTML;
return div.innerText;
}
HTMLDecode( " <img src=1 οnerrοr=alert(1) /> " );
{
var div = document.createElement( ' div ' );
div.innerHTML = strEncodeHTML;
return div.innerText;
}
HTMLDecode( " <img src=1 οnerrοr=alert(1) /> " );
有人很傻很天真的以为,这个没有被appendChild到dom树的元素,应该不会执行。