为了安全起见,我在客户端使用html_sanitize()来清理HTML。但是,不同元素的风格与我在消毒之前收到的风格不同。我需要保留标签中的内容,并且我试图弄清楚如何。
例如,我收到以下HTML:
<div>
<link href="style.css" rel="stylesheet" type="text/css" />
<script> alert('Blah');</script>
<a class="btn-active"></a>
</div>
和html_sanitize(bodyHtml,urlX,idX);返回:
<div>
<a class="btn-active"></a>
</div>
理想情况下,我希望将链接标记与其他所有内容保持一致。像这样。
<div>
<link href="style.css" rel="stylesheet" type="text/css" />
<a class="btn-active"></a>
</div>
我一直试图在任何地方找到解决方案,但我无法做到。我还查看了文档,实现了自定义策略,但即便如此,我也无法控制脚本标记被删除。
有办法做到这一点吗?
答案 0 :(得分:0)
根据documentation,您可以执行以下操作:
// Allow only a super restricted set of tags and attributes
clean = sanitizeHtml(dirty, {
allowedTags: [ 'link' ],
allowedAttributes: {
'link': [ 'href','rel','type' ]
}
});
使用dirty = document.documentElement.innerHTML;
(例如)。
您当然要dirty
更改clean
以完成工作:
document.documentElement.innerHTML = clean;