【发布时间】:2010-12-07 17:10:49
【问题描述】:
我知道我可以在我的视图中使用 ActionView 帮助器 strip_tags 方法来清理输出,但是在将用户输入保存到我的数据库之前清理用户输入的最佳方法是什么?我应该找到一种方法将视图助手包含在我的控制器中并重用 strip_tags 方法吗?我认为 Rails 会在全球范围内提供一些东西来做这样的事情。
【问题讨论】:
标签: ruby-on-rails input xss sanitize
我知道我可以在我的视图中使用 ActionView 帮助器 strip_tags 方法来清理输出,但是在将用户输入保存到我的数据库之前清理用户输入的最佳方法是什么?我应该找到一种方法将视图助手包含在我的控制器中并重用 strip_tags 方法吗?我认为 Rails 会在全球范围内提供一些东西来做这样的事情。
【问题讨论】:
标签: ruby-on-rails input xss sanitize
xss_terminate 插件呢?
【讨论】:
也许清理 gem:http://wonko.com/post/sanitize
【讨论】:
为什么需要清理用户的输入?
通常,只要您打印用户输入或将其嵌入到更大的输出块中,您只需对用户输入进行严格的、上下文感知的编码/转义。
【讨论】:
为什么要清理用户输入?这甚至没有任何意义!您总是希望清理(转义)输出,而不是输入,因为清理的含义取决于您在其中使用内容的上下文。在任何上下文中都没有像字符串这样安全的东西。无论您的应用程序今天使用什么场景,您都不希望数据库中有一堆“安全”的错位字符串,因为明天,您可能想要对它们做一些不同的事情。如果您的表示层做的是正确的事情(根据上下文转义内容),那么您就可以了,无论其中有多少引号、反斜杠或 DROP TABLE 语句。
【讨论】: