angular - 在 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)
但它不像我想要的那样工作,因为如果我输入带有重音符号 (áéíóú) 或 ¿? 的单词,它会返回:
- 输入:áéíóú ¿hola?
- 返回: á ;é ;í ;ó ;ú ¿ ;hola?
我想得到与我输入的数据相同的信息,但是如果我输入一个脚本,我可以检测到它不保存或不在我的输入中执行。
解决方案
您可以遵循一些方法来实现您正在尝试做的事情。sanitize 不会过滤您的输入数据,因为这不是它的用途。
1)您可以创建一个 PIPE,它只允许用户输入输入文本,例如某个字符。如果只是检查您键入的内容的 ascii 键是否在某个范围内(例如 48-122 包括所有数字和字母 Aa 到 Zz)。
2) 使用与第 1 点相同的逻辑,但不是创建 PIPE,而是创建一个函数,该函数根据需要返回字符串“sanitized”,或者在有一些错误字符时显示消息。
3) 这一点可能是题外话。但是,如果您必须将数据发送到网络服务器,请务必删除某些字符(例如 ',",!,=, IE: Injection)并使用后端语言的功能正确“清理”文本.
无论如何,默认情况下没有任何内容允许您仅键入某些字符或类似的内容。您必须编写一些代码。你没有写你真正想做的事情,但我建议你看看 Angular 的默认 PIPE,这对于执行各种操作非常有用。
推荐阅读
- sql - 如何从类别表中以分层形式输出所有类别和子类别?
- facebook - 不足的范围无法以管理员身份发布到页面
- java - 如何将 HashMap 列表与选定键进行比较
- c# - 在 Linux Docker 容器中运行时无法读取证书 - 适用于 Windows
- c# - 在 ASP.Net 控制器中将字符串转换为浮点数
- swift - 在 AVCapture Swift 中仅捕获相机预览
- r - 如何按组平均数据集中的所有列
- python - pyqt5 qlistwidget 对大文本数据的性能
- ruby-on-rails - 带有 has_many 和 belongs_to 的 Rails 查询出乎意料的结果
- sql-server - SQL Server 2016 虚拟表 - 语法“AS”不正确