1

我有一个使用 Exchange Web 服务查询 Exchange 服务器的 nodejs 应用程序。我从收件箱中检索电子邮件并将它们转换为我的应用程序中的任务。但是,电子邮件的正文包含 Outlook 格式的 HTML。我想尽可能接近原始格式显示电子邮件,包括格式化/等,但我担心跨站点脚本被嵌入到电子邮件中。处理这个问题的最佳方法是什么?在这种情况下,是否有任何 javascript 或节点库可以删除恶意跨站代码?

4

1 回答 1

0

我发现Cheerio是完成这项任务的最佳方式。一旦安装到 Node 中,我就可以使用 jQuery 文本函数将电子邮件正文转换为文本:

var cheerio = require('cheerio'),
$ = cheerio.load(emailBody);

var emailText = $('body').text();

然后,您可以安装markdown以将纯文本解析回 markdown 样式中的安全 html:

var markdown = require( "markdown" ).markdown;
console.log( markdown.toHTML( emailText ) );

然后,如果您想以原始格式显示电子邮件,您可以将原始格式保存在您的数据库中,并为用户提供显示它的选项,如果他们敢的话。当然,这为跨站点脚本再次打开了机会,但是如果您只将选项提供给受信任的用户,那么您可能会很安全。也许您还可以让他们选择下载原始源并在他们的本地计算机上运行它,这样它就不会在您的服务器上执行。

于 2013-12-13T19:09:51.947 回答