【问题标题】:Passing arbitrary data to rails cache将任意数据传递到 Rails 缓存
【发布时间】:2015-09-16 18:23:20
【问题描述】:

我想知道在rails中直接将任意数据作为缓存名称传递是否安全,例如:

Rail.cache.fetch(params[:unsafe_param], expires_in: 2.hours) do
    'foo'
end

我正在使用 redis 驱动程序,我担心任何SQL-Injection 之类的缓存攻击,这是我必须担心的事情还是驱动程序本身会进行清理?

【问题讨论】:

标签: ruby-on-rails redis


【解决方案1】:

这取决于您的用例,但一般答案是肯定的。这是不安全的,因为 Redis 没有身份验证的概念。

键只是字符串,因此用户可以遍历大量参数值来读取您在 Redis 中的任何内容。此外,它们还会为每个请求写入值到缓存中,从而使您面临拒绝服务攻击。攻击策略是简单地通过请求数十亿个密钥来填满 Redis 所在机器上的所有内存。如果那台机器上有其他东西,它也会出现故障。

因此,尽可能多地验证事物,并且只使用您已验证并知道有限的数据设置键。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-14
    • 1970-01-01
    • 2016-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-25
    相关资源
    最近更新 更多