有许多网站处理大量数据,例如检索国家/地区的邮政编码、驾驶执照号码,其功能基于通过将它们存储在临时位置来检索搜索最多的项目。使用 Memcached可以缓解整个场景。
Memcached是一种临时数据存储服务,其中数据存储在称为Slabs的内存块中。每个slab包含多个项目,最后,实际数据以:格式存储在这些项目中。
Memcached 被设计为一个池化服务器并通过 TCP 使用,其中默认的 TCP 和 UDP 端口是 11211。池化过程为我们提供了很大的 ram 空间,并且项目中存在的数据以散列表的形式存储在池中存在多台机器。当表已满时,使用最近最少使用 (LRU) 顺序将新条目添加到表中。
memcached 服务器管理由 memcached 存储的整个数据,并通过从最初存储数据的服务器检索数据来保持完整性。更好的部分是 memcached 不需要数据库的可靠性,因为它在进入二级存储之前将请求分层到 ram 中。由于它独立于数据库,因此可以避免 SQL 注入,但这还不是全部。因为每个优点都有缺点。同样,如果 memcached 服务器没有正确配置,它可能容易受到许多攻击,这可能是非常严重的破坏性和危险的。这些配置错误的服务器很容易受到通过 Internet 进行的反射和放大拒绝服务攻击 ( DDoS) 的攻击。在 memcached 的情况下,存储值的限制是用户可配置的,但默认情况下设置为 1MB。
暴露的memcached服务器容易受到发送到端口11211的欺骗UDP数据包的攻击,该数据包可以多次请求单个1MB值,从而导致巨大的流量和巨大的放大系数,从而导致名称放大攻击。另一种破坏性的攻击类型是反射攻击,攻击者不是将 get 请求转发到客户端,而是直接将其转发到主机主机,作为响应的机器将请求反射到原始客户端,从而通过淹没网络来转储网络。要求。
为了降低这些风险,网络基础设施和 memcached 服务器应该通过实施行业标准的最佳当前实践来配置,例如将 memcached 仅绑定到特定的源 IP。在运行 memcached 服务(如强大的防火墙)时采取的保护越大,添加、删除和更新数据的风险就越小。