如何清理表单值以允许纯文本
How to sanitize form values to allow text-only
我了解如果用户需要提供 HTML 代码作为表单输入的一部分(例如在文本区域中),那么我会使用 Anti-Samy 策略来过滤掉有害的 HTML这是不允许的。
但是,我有一些文本字段和文本区域应该是纯文本的。根本不应将 HTML 代码从这些字段插入到数据库中。
因此,我正在尝试清理输入,以便仅将原始文本插入数据库。我相信我可以通过两种方式做到这一点:
- 使用正则表达式过滤掉 HTML 代码,例如
#REReplaceNoCase(FORM.InputField, "[^a-zA-Z\d\s:]", "", "ALL")#
- 使用严格的纯文本反萨米策略
哪个选项是 correct/good-practice 从文本字段中删除任何用户输入的 HTML 代码的方法。或者我还有其他选择吗?
虽然您可以使用 AntiSamy 来做到这一点,但我不知道这样做是否明智。我认为有点违背了它的灵活性的目的。我很好奇 运行 作为正则表达式过滤器的开销,即使是最小的开销。
在这种情况下,我个人可能会选择正则表达式路由。您的示例似乎只去掉了括号。这在你的情况下可以接受吗? (如果这只是一个例子可以理解)也许使用这样的东西:
reReplace(string, "<[^>]*>", "", "ALL");
我了解如果用户需要提供 HTML 代码作为表单输入的一部分(例如在文本区域中),那么我会使用 Anti-Samy 策略来过滤掉有害的 HTML这是不允许的。
但是,我有一些文本字段和文本区域应该是纯文本的。根本不应将 HTML 代码从这些字段插入到数据库中。
因此,我正在尝试清理输入,以便仅将原始文本插入数据库。我相信我可以通过两种方式做到这一点:
- 使用正则表达式过滤掉 HTML 代码,例如
#REReplaceNoCase(FORM.InputField, "[^a-zA-Z\d\s:]", "", "ALL")#
- 使用严格的纯文本反萨米策略
哪个选项是 correct/good-practice 从文本字段中删除任何用户输入的 HTML 代码的方法。或者我还有其他选择吗?
虽然您可以使用 AntiSamy 来做到这一点,但我不知道这样做是否明智。我认为有点违背了它的灵活性的目的。我很好奇 运行 作为正则表达式过滤器的开销,即使是最小的开销。
在这种情况下,我个人可能会选择正则表达式路由。您的示例似乎只去掉了括号。这在你的情况下可以接受吗? (如果这只是一个例子可以理解)也许使用这样的东西:
reReplace(string, "<[^>]*>", "", "ALL");