在 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 这个:
- 输入:áéíóú ¿hola?
- Return: á ;é ;í ;ó ;ú ¿ ;hola?
我想获得与输入数据相同的数据,但如果我输入脚本,我可以检测到它不保存或不在我的输入中执行。
您可以遵循一些方法来实现您想要做的事情。清理不会过滤您的输入数据,因为这不是它的用途。
1) 您可以创建一个 PIPE,它只允许用户键入输入文本,例如某些字符。如果只是检查您输入的 ascii 键是否在某个范围内(例如 48-122 包括所有数字字母 A-a 到 Z-z)。
2) 使用与第 1 点相同的逻辑,但不是创建 PIPE,而是创建一个函数,根据需要创建 return 字符串 "sanitized" 或显示消息(如果有)是一些错误的字符。
3) 这一点可能跑题了。但是,如果您必须将数据发送到 Web 服务器,请确保删除某些字符(如 ',",!,=, IE: Injection)并使用后端语言的函数来正确 "sanitize"正文。
无论如何,默认情况下没有任何内容允许您仅键入某些字符或类似字符。您必须编写一些代码。您没有写下您真正想做的事情,但我建议您查看 angular 的默认 PIPE,这对于执行各种操作非常有用。
我想在 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 这个:
- 输入:áéíóú ¿hola?
- Return: á ;é ;í ;ó ;ú ¿ ;hola?
我想获得与输入数据相同的数据,但如果我输入脚本,我可以检测到它不保存或不在我的输入中执行。
您可以遵循一些方法来实现您想要做的事情。清理不会过滤您的输入数据,因为这不是它的用途。
1) 您可以创建一个 PIPE,它只允许用户键入输入文本,例如某些字符。如果只是检查您输入的 ascii 键是否在某个范围内(例如 48-122 包括所有数字字母 A-a 到 Z-z)。
2) 使用与第 1 点相同的逻辑,但不是创建 PIPE,而是创建一个函数,根据需要创建 return 字符串 "sanitized" 或显示消息(如果有)是一些错误的字符。
3) 这一点可能跑题了。但是,如果您必须将数据发送到 Web 服务器,请确保删除某些字符(如 ',",!,=, IE: Injection)并使用后端语言的函数来正确 "sanitize"正文。
无论如何,默认情况下没有任何内容允许您仅键入某些字符或类似字符。您必须编写一些代码。您没有写下您真正想做的事情,但我建议您查看 angular 的默认 PIPE,这对于执行各种操作非常有用。