我正在帮助(用VB.NET for Winforms编写)帮助筛选和分发我组织内的传入电子邮件,这将是并将继续由人员制作(我只需要加速他们的工作)。程序会将每条消息转换为HTML文档及其附件到PDF,并将其存储在内部数据库中。这部分已经有效了。
我已经在使用HtmlAgilityPack来处理内联图片(src="cid:..."
)了,但是我担心我能做些什么来防止邮件中的恶意内容在显示时被激活(在一个.NET的WebBrowser控件)。
我想到了我可以做的两件事,还有 HtmlAgilityPack :
删除每个<script>
元素;
将每个<a href="...">
属性更改为"#"
对此问题更有经验的人是否可以建议我对每条消息的HTML进行“清理”时应采取的其他步骤?
非常感谢!
答案 0 :(得分:1)
作为额外的安全层,您可以:
使用网址扫描程序检查嵌入的网址。我建议UrlVoid,他们也有一个API(如果你已经有一个合适的病毒扫描程序,那就毫无意义了。)
根据建议,您可以删除所有script
和其他所有style
块:
Dim doc As HtmlAgilityPack.HtmlDocument = New HtmlAgilityPack.HtmlDocument
doc.LoadHtml(html)
doc.DocumentNode.Descendants.Where(() => { }, ((n.Name = "script") _
OrElse (n.Name = "style"))).ToList.ForEach(() => { }, n.Remove)
将您不希望允许的元素的任何不需要的属性解析出来,例如onclick()
和其他javascript事件。
注意:有很多功能强大的PHP HTML清洁剂/净化器。您可以使用它们进行一些快速测试(甚至使用一个来预处理您的内容)。大多数情况下建议使用HTML Purifier。