在Rails生产环境中禁用服务器端缓存

4
我即将部署一个涉及敏感数据的应用程序。因此,不应该有任何数据存储到磁盘上。是否有一种方法可以禁用服务器端缓存?我找不到任何相关信息。

你是在谈论日志文件和控制台输出吗? - stephenmurdoch
嗨,我指的是在 tmp/cache 下创建的文件。 - Majnu
3个回答

6

请在您的配置文件中设置以下内容。 i-e config/environments/production.rb

config.perform_caching = false config.cache_store = :null_store

这将禁用缓存并将缓存存储设置为 null_store。

6

我偶然发现了这个问题,并且假设你不再需要答案。不过,我认为你正在寻找以下内容:

config.action_controller.perform_caching = false

我自己没有测试过,因为这个问题很旧了,但我认为这是正确的答案。谢谢! - Majnu

-2
您的要求表述不太合理。如果您有“敏感数据”,那么这些数据存储在哪里?很可能是在数据库中吧?如果是这样,那么服务器端缓存并不会增加任何安全风险。
许多应用程序都涉及敏感数据。因此,请确保服务器安全,不要关闭缓存。
如果我误解了您的设置,请进一步解释。

数据库位于不同的服务器上,我没有将数据库密码存储在database.yml中,而是让用户在登录时输入它们(这不容易做到,但现在可以了)。Rails服务器可以被管理员访问,他们不应该能够查看敏感数据。我不明白为什么Rails应用程序绝对必须将数据存储在磁盘上,因为我没有需要缓存的性能问题。我只想关闭它。有什么想法吗? - Majnu
1
这是在处理高于“非机密”数据时的常见政府要求。除非绝对必要/关键,否则您不能在服务器上存储任何数据。通常,这包括任何缓存机制,除非经过批准(祝你好运)。 - Kris
@Marnen 这完全取决于项目以及你能够获得批准的内容。只要Memcache是在应用服务器之外进行托管并且以类似数据库的方式处理,可能会被允许使用,但是否使用仍完全取决于负责该项目安全和IA的人的自行决定。甚至使用会话的权限也可能极为有限。我对批准流程本身以及超出某些我在此过程中学到的准则之外的任何指导方针都不了解(例如,即使是缓存的应用服务器上的任何部分数据,也可能会导致你的应用被淘汰)。 - Kris
@Kris “只要Memcache是在应用程序服务器之外托管的,那么它可能是被允许的”——什么?这听起来似乎会使安全性变得更糟,而不是更好。我建议使用memcached的想法是它可以在应用程序服务器上进行缓存——但不是基于磁盘的,所以它不会真正暴露另一个弱点。(当然,为了确保这一点,您必须不使用虚拟内存。)但是,我不是安全专家。 - Marnen Laibow-Koser
1
@Kris 合同要求有时候规定不够明确。我更关注从技术角度出发,与安全问题相一致的合理性。 - Marnen Laibow-Koser
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接