在共享主机环境中使用 Memcached 是否安全?

信息安全 共享主机 缓存
2021-09-08 04:38:09

我使用的共享主机启用了Memcached ,我搜索了一些在共享主机环境中使用Memcached的论坛,可能会导致安全问题,例如查看其他用户的缓存、编辑缓存等。但日期要追溯到 2013 年,所以我有点担心,在共享主机环境中使用Memcached是否仍然不安全/安全?

而且,我没有访问权限,php.ini因此SASL身份验证对我不起作用。有没有办法安全/可靠地使用Memcached ?如果没有,我还有其他选项可以使用缓存数据结果吗?

2个回答

如果你没有配置它,那么你就无法知道它是否安全。如果我们谈论 memcached、Oracle 数据库、opensshd 都没关系......

正如 grochmal 所说,memcache 中没有内在的访问控制机制。因此,服务提供商几乎没有空间来实现您可能想要的那种分区。

加密存储在 memcache 中的所有数据将解决泄露问题(但会产生密钥管理问题)。它不能防止数据损坏。

我还有其他选择可以使用缓存数据结果吗

我们不知道托管是什么,也不知道您对安全性的要求是什么。如果“数据”是 mysql 结果集,那么您使用 mysql 的缓存。如果它的 JSON 数据是通过 HTTP 获取的,那么您可以使用转发代理。如果它缓存您自己页面的输出,那么反向代理......

好吧,memcached 本身没有任何权限配置(只有监听套接字的权限)。您只需启动守护程序,发送给它的所有内存对象都将根据密钥进行存储。发送或检索数据的用户或机器之间没有区别,您甚至可能会遇到密钥冲突。

Memcached 被设计为简单小,迫使应用层考虑其他一切。并且最初设计为与应用程序在同一台机器上运行。自 2013 年以来,该设计没有改变。

综上所述,如果托管服务提供商在您直接连接到 memcached 的另一台机器上为您提供了一个套接字,那么您应该立即停止使用该托管服务提供商。这简直是​​不明智的。使用 memcached 的托管服务提供商将为每个用户运行不同的 memcached 守护进程(整个守护进程只有几千字节),使用反向代理(带有身份验证),或者构建一个并不真正运行 memcached 的 memcached 兼容缓存。

如果您查看AWS 的功能

Memcached 层是 AWS OpsWorks 层,它为充当 Memcached 服务器的实例提供蓝图

即它们的弹性缓存可以用作memcached 缓存,但它不是监听套接字的memcached 守护进程。并且(来自同一篇文章)您可以看到缓存有身份验证:

自定义安全组

如果您选择不自动将内置 AWS OpsWorks 安全组与您的层关联,则会显示此设置。您必须指定与层关联的安全组。有关详细信息,请参阅创建新堆栈。


因此,将 memcached 用作任何网络解决方案(尤其是在托管环境中)是不明智的。但是大多数宣传 memcached 的托管环境并没有真正使用 memcached,它们在 from 中放置了一个层来添加权限。