在 Angular 中创建安全表单 2+

Create a secure form in Angular 2+

我想在 Angular2+ 中创建一个安全的表单,使用 sanitize 或类似的东西,但我尝试了一下,发现 sanitize 不适用于表单。

我想检测脚本之类的东西。

我试过这个:

    let title = form.title;
    console.log("TITLE", title) // title that I enter in my input
    title = this._sanitizer.sanitize(SecurityContext.HTML, title);
    console.log("after title", title)

但它并没有像我希望的那样工作,因为如果我输入带有重音符 (áéíóú) 或 ¿? 的单词,它 returns 这个:

我想获得与输入数据相同的数据,但如果我输入脚本,我可以检测到它不保存或不在我的输入中执行。

您可以遵循一些方法来实现您想要做的事情。清理不会过滤您的输入数据,因为这不是它的用途。

1) 您可以创建一个 PIPE,它只允许用户键入输入文本,例如某些字符。如果只是检查您输入的 ascii 键是否在某个范围内(例如 48-122 包括所有数字字母 A-a 到 Z-z)。

2) 使用与第 1 点相同的逻辑,但不是创建 PIPE,而是创建一个函数,根据需要创建 return 字符串 "sanitized" 或显示消息(如果有)是一些错误的字符。

3) 这一点可能跑题了。但是,如果您必须将数据发送到 Web 服务器,请确保删除某些字符(如 ',",!,=, IE: Injection)并使用后端语言的函数来正确 "sanitize"正文。

无论如何,默认情况下没有任何内容允许您仅键入某些字符或类似字符。您必须编写一些代码。您没有写下您真正想做的事情,但我建议您查看 angular 的默认 PIPE,这对于执行各种操作非常有用。