在浏览器中显示HTML电子邮件主体之前,请确保安全



我正在研究助手(用vb.net编写Winforms),以帮助筛选和分发我的组织内部的电子邮件,这是并且将继续由人类员工(我只需要加快他们的工作)。程序将将每个消息转换为HTML文档及其对PDF的附件,并将其存储在内部数据库中。这部分已经在工作。

我已经在使用htmlagilitypack来处理内联图像(src="cid:..."),但是我担心在显示时可以激活消息内部的恶意内容(在.NET的WebBrowser控件中)。<<<<<<<<<<<<<<<<<<<<<<

我想到了我可以做的两件事,也想到 htmlagilitypack

  • 删除每个<script>元素;

  • 更改每个<a href="...">属性为"#"

任何经验更经验的人都可以提出我应该采取的其他步骤。

非常感谢!

作为额外的安全层,您可以:

  • 使用URL扫描仪检查嵌入式URL。我建议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事件。

  • 删除其他不需要的标签:html敏捷包条标签不在白名单中

注意:有很多功能强大的PHP HTML消毒剂/净化器。您可以与他们一起玩一些快速测试(甚至使用一个测试来预处理您的内容)。建议使用HTML净化器。

最新更新