在前端开发中,经常会遇到需要对字符串进行 HTML 转义的情况,以防止 XSS 攻击。而 npm 包 esc
提供了一种简单快捷的方法来进行字符串转义。
简介
esc
是一个小型库,用于将字符串转义为 HTML 实体,从而保护页面免受恶意脚本攻击。这个包适用于生成 HTML、JSON 或 URL。
- 支持转义 HTML5、XML 和其他语言的实体。
- 可以自定义有哪些字符需要转义。
- 可以将非 ASCII 码也进行转义。
安装
安装 esc
很容易,只需要在命令行中执行:
npm install esc
使用
使用 esc
非常简单,只需要导入它并调用即可。
const esc = require('esc'); esc('<script>alert("Hello")</script>'); // 返回:<script>alert("Hello")</script>
以上代码将返回转义后的字符串。esc
直接将原始字符串转义为 HTML 实体,防止被 XSS 攻击。
下面是一个更加详细的使用示例,展示了如何在生成 HTML 时对字符串进行转义。
-- -------------------- ---- ------- --------- ----- ------ ------ ----- ---------------- ---------- --------------- ------- ------ ------- ------------ --- --- --------- -- ---- ------- -------
在上面的示例中,通过模板引擎或类似技术,将需要转义的字符串传入 esc
函数中。这将生成一个被转义的 HTML 片段,在浏览器渲染时可以进行安全展示。
配置
esc
支持多种配置项,可以根据自己的需要进行修改。
自定义字符列表
默认情况下,esc
会转义所有可疑的字符,但这些字符可能并不是你要转义的。通过配置 chars
属性,可以指定需要转义的字符列表。
-- -------------------- ---- ------- ----- --- - --------------- ------------ ------ - ---- ------- ---- ------ - --- ------------- ------------- -- ----------------- ----------------
以上配置指定了需要转义的字符列表,将 <
和 >
转义为 <
和 >
。
非 ASCII 码转义
默认情况下,esc
只会转义 ASCII 码,而不会转义 Unicode 码。如果需要转义非 ASCII 码,可以开启 unicode
属性。
const esc = require('esc'); esc.config({ unicode: true }); esc('你好!'); // 返回:你好!
以上配置将开启非 ASCII 码转义,将“你好!”转义为 Unicode 码。
结论
esc
是一个小型但十分实用的库,可以快速将字符串转义为 HTML 实体,从而在前端开发中提高安全性。通过合理配置,可以满足各种不同场景的需求。如果你在开发中需要进行字符串转义,不妨试试 esc
。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/102209