gpt4 book ai didi

php - 如何正确预防memcached "protocol injection"?

转载 作者:行者123 更新时间:2023-12-01 05:50:32 25 4
gpt4 key购买 nike

我发现当我将 \r\n 放入键中以从 memcached 服务器获取值时,它可以用于注入(inject) memcached 协议(protocol)来运行另一个命令。以下是代码示例,

在 PHP 中:

<?php
$m = new Memcached();
$m->addServer('localhost', 11211);

$key = "foo\r\nset bar 0 10 10000\r\n";

echo $m->get($key);
echo $m->get($key); // <- hang here
?>

在Python中:

import pylibmc

mc = pylibmc.Client(['127.0.0.1:11211'])

key = 'foo\r\nset bar 0 10 10000\r\n';
print mc.get(key)
print mc.get(key) # <- hang here

如果从用户处读取key,则用户可以在memcached服务器中执行任意命令,例如运行flush_all来减慢网站速度或设置密码为其他用户缓存。

为什么客户端库不去掉这些非法字符?如何在我的代码中正确防止它?

最佳答案

对用户值进行编码(例如base64)并将结果作为 key ,或使用二进制协议(protocol)。

关于php - 如何正确预防memcached "protocol injection"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14482228/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com