You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正常展示CKEditor4格式化文本?Node.js+MySQL+EJS环境

解决EJS渲染CKEditor格式化HTML时的转义问题

这问题我之前帮不少开发者解决过,核心原因其实是EJS的默认输出行为在搞鬼!

1. 直接解决:替换EJS的输出标签

EJS里的<%= %>标签会自动对输出内容进行HTML转义,目的是防止XSS攻击,但这就导致CKEditor生成的HTML标签被转成了&lt;p&gt;这类实体字符,浏览器自然只会显示纯文本而非排版效果。

你只需要把:

<%=result.FormatedText%>

改成:

<%-result.FormatedText%>

<%- %>是EJS的不转义输出标签,它会直接把原始HTML内容输出给浏览器,这样CKEditor的格式化标签就能被正常解析渲染了。

2. 关键安全提醒:别忽略XSS风险

直接渲染未过滤的用户输入HTML是有XSS漏洞风险的——如果有人恶意输入包含脚本的内容,直接渲染会导致你的页面被注入恶意代码。所以一定要做HTML净化处理,这里推荐用DOMPurify库:

步骤1:安装依赖

npm install dompurify jsdom

步骤2:在Node.js中净化HTML

从数据库取回文本后,先通过DOMPurify过滤掉危险的脚本和标签,再传给EJS模板:

const createDOMPurify = require('dompurify');
const { JSDOM } = require('jsdom');

// 初始化DOMPurify
const window = new JSDOM('').window;
const DOMPurify = createDOMPurify(window);

// 假设你从数据库拿到了result对象
const safeFormattedText = DOMPurify.sanitize(result.FormatedText);

// 把净化后的内容传给模板
res.render('your-page', { formattedText: safeFormattedText });

步骤3:在EJS中输出净化后的内容

<%- formattedText %>

这样既保留了CKEditor的排版效果,又能有效防止XSS攻击,安全又实用。

内容的提问来源于stack exchange,提问作者Manohara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 16:17:54