电子邮件中的 HTML 跨站点脚本问题

标签 html node.js email exchange-server xss

我有一个使用 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/

相关文章:

javascript - 如何使用 Javascript 实时验证表单

html - 使用 CSS 设计列表样式

javascript - 在 Angular 工厂上使用套接字

javascript - 如果向第三方 API 发出错误请求,Node JS Express 如何发送 404 错误?

java - 如何在Windows机器上的mstor中设置读取收件箱的url

html - IE 11 剪切文本

angularjs - 我试图运行 sb-admin-bs4-angular2-master 这是一个 nodejs 应用程序,当我运行 npm install 时出现以下错误

android - 使用 android 将 xml 文件作为附件发送

使用 CSS 的 HTML 电子邮件

JavaScript:检查 "virgin"元素?