gpt4 book ai didi

ruby-on-rails - 使用 Ruby on Rails 清理用户输入

转载 作者:行者123 更新时间:2023-12-03 15:58:30 25 4
gpt4 key购买 nike

我正在编写一个非常简单的 CRUD 应用程序,它获取用户故事并将它们存储到数据库中,以便其他编码人员可以为我们都在从事的项目组织它们。但是,我遇到了在将用户输入保存到数据库之前对其进行清理的问题。我无法从 Story 模型中调用 sanitize() 函数来去除所有的 html/脚本。它要求我执行以下操作:

def sanitize_inputs
self.name = ActionController::Base.helpers.sanitize(self.name) unless self.name.nil?
self.story = ActionController::Base.helpers.sanitize(self.story) unless self.story.nil?
end

我想验证用户输入是否已被清理,但我不确定两件事:
1) 什么时候应该进行用户输入验证?在保存数据之前是很明显的,但是,我认为,在验证用户输入没有脚本/html 标签之前,我应该在 Controller 中处理这些东西,在验证之前,还是其他一些不明显的区域?
2)为此模型编写单元测试,除了将“这是一个恶意代码示例”与 sanitize(example) 输出进行比较之外,我如何验证脚本/html 是否已删除?

提前致谢。

最佳答案

有两种方法可以消除 XSS 漏洞:

A.在将内容存储在数据库中之前过滤内容(您正在尝试做什么)。这里有 2 个插件可以为您执行此操作。

xss_terminate

acts_as_sanitiled

B.在显示时过滤内容(Rails 3默认这样做)。您可以使用 h功能或用途rails_xss .

和你的第二个问题一样,我认为你的单元测试应该只测试调用了清理方法,而不是功能本身(所以对基本示例的简单断言应该可以解决问题)。默认情况下,清理功能/插件已经过很好的测试。

关于ruby-on-rails - 使用 Ruby on Rails 清理用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2883089/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com