我有一个使用 Exchange Web 服务查询 Exchange 服务器的 Nodejs 应用程序。我从收件箱中检索电子邮件并将其转换为我的应用程序中的任务。但是,电子邮件正文包含 Outlook 格式的 HTML。我想尽可能接近原始格式显示电子邮件,并进行格式设置等,但我担心电子邮件中嵌入了跨站点脚本。处理这个问题的最佳方法是什么?是否有任何 JavaScript 或 Node 库可以在这种情况下删除恶意跨站代码?
最佳答案
我找到了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 ) );
然后,如果您想以原始格式显示电子邮件,您可以将原始格式保存在数据库中,并为用户提供显示它的选项(如果他们敢的话)。当然,这再次为跨站点脚本编写提供了机会,但如果您只将选项提供给受信任的用户,那么您可能会安全。也许您还可以让他们选择下载原始源代码并在本地计算机上运行它,这样它就不会在您的服务器上执行。
关于电子邮件中的 HTML 跨站点脚本问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19959816/