对于富文本编辑器产生的内容,我们可以利用 xss 过滤器 DOMPurify 等工具来解决 xss 攻击。
由于 HTML 解析会存在空白折叠的问题,对于使用 input type=textarea 的多行文本我们需要转换成 html 才能够实现换行功能。
由于转换过程可能涉及到 xss 攻击,所以我们需要做一些基础的转换。如此就不会产生此类问题。
此时我们使用 lodash.escape, 该函数可以转义 string 中的 ”&”, ”<”, ”>”, ’”’, ”’”, 和 ”`” 字符为 HTML 实体字符。
即:
转换多行代码逻辑代码如下所示
注意: 随着 lodash 的更新, escape 转义变得更加严格,涉及到
鉴于 % 也会转义 为 %25,所以这里并不需要担心原有文字中会存在 %09 %20 被转义的情况,重新处理为: