如何在 Deno 中清理用户输入?

How to sanitize user input in Deno?

我对后端的安全了解不多-JavaScript。

我能想到的清理输入的唯一方法是使用正则表达式并替换所有不需要的字符,或者拆分整个字符串和 filter/map 不需要的字符,然后重新连接在一起。

我也在为 Deno 使用 Oak 模块。

你可以试试这个https://deno.land/x/html_entities 根据 lib 文档:

HTML 您可以从 XmlEntities 模块实现有效性和 XSS 攻击预防。

import { XmlEntities } from "https://deno.land/x/html_entities@v1.0/mod.js";

XmlEntities.encode('<>"\'&©®'); // &lt;&gt;&quot;&apos;&amp;©®
XmlEntities.encodeNonUTF('<>"\'&©®'); // &lt;&gt;&quot;&apos;&amp;&#169;&#174;
XmlEntities.encodeNonASCII('<>"\'&©®'); // <>"\'&©®
XmlEntities.decode('&lt;&gt;&quot;&apos;&amp;&copy;&reg;&#8710;'); // <>"'&&copy;&reg;∆

您可以重复使用 sanitize npm 包:

npm i -g sanitize

然后你可以像这样使用它:

import { createRequire } from "https://deno.land/std/node/module.ts";

const require = createRequire(import.meta.url);
const sanitizer = require("sanitizer");

name = sanitizer.value(name, "string");
surname = sanitizer.value(surname, "string");

或者你可以用另一个清理库替换这个库 你 运行 你的 deno 脚本:deno run --allow-read --unstable script.ts