如何正确防止memcached的“协议注入”?

2024-04-19 21:29:31 发布

您现在位置:Python中文网/ 问答频道 /正文

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

在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中:

^{pr2}$

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

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


Tags: key代码用户命令echo服务器协议示例