Ruby on rails 对于CVE-2021-22885,是否仅对阵列内容有危险?
如果我理解正确,例如,如果我们有这样的代码,可能会很危险:Ruby on rails 对于CVE-2021-22885,是否仅对阵列内容有危险?,ruby-on-rails,security,parameters,Ruby On Rails,Security,Parameters,如果我理解正确,例如,如果我们有这样的代码,可能会很危险: 重定向到(参数[:重定向url]) 其中params[:redirect\u url]是['my','secret'] 因为在redirect\u to下面,使用了url\u for,并且生成了路径my\u secret\u path,该路径看起来像是一条会泄露机密信息的路径,我们不想泄露机密信息 如果我的上述理解有误,请纠正 现在,我的问题是,我们只担心redirect_to方法的参数是数组的情况吗 如果参数是一个包含用户输入的散列,
重定向到(参数[:重定向url])
其中params[:redirect\u url]
是['my','secret']
因为在redirect\u to
下面,使用了url\u for
,并且生成了路径my\u secret\u path
,该路径看起来像是一条会泄露机密信息的路径,我们不想泄露机密信息
如果我的上述理解有误,请纠正
现在,我的问题是,我们只担心redirect_to方法的参数是数组的情况吗
如果参数是一个包含用户输入的散列,这还会很危险吗
比如说,
redirect_to(new_params)
wherenew_params
=post_params.merge({controller:post_params[:controller],action:post_params[:action]})
在这种情况下,用户可以将post_参数[:controller]
设置为my
,将post_参数[:action]
设置为secret
另外,如果我们有
重定向到(params)
,这也会很危险吗?params
将包含操作和控制器键值对,用户可以设置它(通过调用不同的URL?),因此他们可以将其设置为my
和secret
散列给出大致相同的漏洞。请注意,当请求通过路由中间件传递时,rails将覆盖params[:action]
和params[:controller]
,因此重定向到(params.slice(:action,:controller))
将只重定向回同一控制器/操作。