EJS模板特殊字符转义

所属:EJS, Node.js

在做 Todos 项目的过程中,遇到了个特殊字符转义问题,主要是为了防止被 XSS,因此在用户输入完内容后,提交时需对其特殊字符进一步处理。

EJS 模板中,字符串输出时默认是经过 escape 转义编码的,让我们来了解下 <%- 变量 %><%= 变量 %> 这两种输出方式的区别

  • <%= 变量 %>
    用 = 号输出,就会被 escape 转义编码,但是当我们想动态生成 HTML 标签时,这种方式可能会有点问题
  • <%- 变量 %>
    用 - 号输出原始内容,不会被 escape

到这里似乎还没有解决如何防止被 XSS 的问题哦。
是的,但是答案已经出来了。

我们直接翻翻 EJS 模板源码看看它自带的 escape 方法是如何实现的?
然后把它摘过来,在用户输入完内容提交时用这个方法直接处理下就ok了。

参考资料