【问题标题】:Removing HTML from user input in Perl and Catalyst在 Perl 和 Catalyst 中从用户输入中删除 HTML
【发布时间】:2011-04-07 15:33:07
【问题描述】:

我将 Catalyst 用于我的 Perl Web 应用程序。从用户输入中删除 HTML 的公认方法是什么?

目前我倾向于使用 HTML::FormatText。但我觉得很奇怪,我找不到 Catalyst 中内置的实用程序来完成这项常见任务。我只是没找到吗?此外,这些用于删除输入的模块似乎需要 5 行代码。我希望有一个简单的“deHTMLify()”方法。我想我可以自己动手,但不想重新发明轮子。

我认为 HTML::FormFU 之类的表单验证模块可以为您做到这一点,但我希望避免这种复杂性。我的表格简短而简单。这个决定是错误的吗?

我做得对吗?

【问题讨论】:

    标签: html perl catalyst


    【解决方案1】:

    我认为你做得不对。正确的做法是接受从服务器发送的文本。然后在您的视图中使用html, or html_entities filter(可能是TT)处理从数据库接收到的所有值。为什么这是正确的方法?好吧,如果您现在不想支持 HTML,您仍然可以破解过滤器以在以后使 HTML 的子集工作。这也让用户可以看到他们的输入——只是被转义了——而不是被剥夺,从而失去对他们发送的内容和一些潜在有价值的信息的跟踪。

    您的方式似乎也对输出机制(HTML)做出了一些假设,我对此感到不舒服。为什么要对一种输出格式的输入进行清理?

    【讨论】:

      【解决方案2】:

      我正在使用HTML::Scrubber,但这就是我想要实际允许元素/属性子集的地方。

      【讨论】:

      • 我希望 stackoverflow 允许多个绿色复选标记,因为我最终在不同的场景中使用了您的两种解决方案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多