首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何清理进入Sinatra应用程序的所有参数?

如何清理进入Sinatra应用程序的所有参数?
EN

Stack Overflow用户
提问于 2015-12-10 13:18:31
回答 3查看 1.8K关注 0票数 8

在一个类似的Rails应用程序中,我能够创建一个递归的hash检查函数,然后运行Sanitize gem的clean/fragment方法从传入的params散列中删除任何HTML元素。我在application_controller中使用了一个之前的过滤器,所以所有的东西都会在整个应用程序中被清除(这是一个很大的应用程序)。

背景: XSS攻击是可能的,特别是在IE浏览器中,但实际上我们只是不希望这些东西被保存到数据库中。尽管最终目标是JSON输出不包含它。

我试图在Sinatra的一个应用程序中做同样的事情(它捆绑了一些ActiveSupport和JRuby ActiveRecord ),但是Sanitize gem不能绑定,因为由于某些数据库的原因,这个特定的应用程序在JRuby中运行。Sanitize需要Nokogiri,而Nokogumbo又需要Nokogumbo,而Nokogumbo不会在这个JRuby环境中构建。

所以我试着用Rack::Util内置的html转义方法在app.rb中做了一个before过滤器,但这会毁了这个应用。

有没有其他我可以考虑的方法?

1)将所有传入参数清理到(JRuby) Sinatra应用程序中

如果不是,则有一个较小的选择:

2)让所有被解析的JSON都对JSON属性值列表中的值进行杀毒?

PS -这里的部分问题是一个包含的本地gem,它处理大量的参数和JSON渲染,被证明是不可能调试的。我将在主机应用程序和本地链接的gem中都包含Pry,当我试图窥探Gem时,我无法查看params散列(它只是显示为空)-there似乎是一个范围问题。

EN

回答 3

Stack Overflow用户

发布于 2015-12-14 19:10:46

Sanitize gem不会捆绑,因为由于某些数据库原因,这个特别的应用程序在JRuby中运行。Sanitize需要Nokogiri,而Nokogumbo又需要Nokogumbo,而Nokogumbo不会在这个JRuby环境中构建。

看起来不太对劲,因为Nokogiri在JRuby中工作(有一个特定于-java的宝石),试一下bundle update nokogiri,这样你就可以让Sanitize玩得很好……

我尝试在app.rb中使用Rack::Util的内置html转义方法做一个

过滤器,但这会毁了这个应用程序。

再说一次,太糟糕了。也许可以发布有关gem版本和遇到的失败的详细信息。虽然我认为,首选的选择是在JRuby下获得在核磁共振下工作的东西-因此我会再次尝试使用Nokogiri。

票数 1
EN

Stack Overflow用户

发布于 2015-12-21 10:29:51

根据Sinatra的说法,有两种好的逃脱方法。这两个都在网站上提到了。http://www.sinatrarb.com/faq.html#escape_html

1)使用机架。该行动提到,它正在炸毁应用程序。你能多解释一下吗?同时,要使用机架方法,您可以使用以下代码片段。一旦参数被清除,你就可以使用它了。

代码语言:javascript
复制
cleanedParam = Rack::Utils.escape_html(params[:some_param_name])

2)使用Erubis gem。宝石是用纯红宝石写的。按如下方式设置erubis gem:

代码语言:javascript
复制
require 'erubis'
set :erb, :escape_html => true

完成后,您可以在输出模板时使用erubis

代码语言:javascript
复制
erb :index
票数 0
EN

Stack Overflow用户

发布于 2016-10-03 07:51:52

您可以遍历Rack散列中的每个参数,并使用Rack的escape_html方法来转义每个参数中包含的params元素。

代码语言:javascript
复制
params.each do |p, v|
  params[p] = Rack::Utils.escape_html(v)
end

可以在here中找到escape_html的文档。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34194222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档