我发现,当我将\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
来减慢网站速度或为其他用户设置密码缓存。在
为什么客户端库不删除这些非法字符?如何在我的代码中正确地防止它?在
对用户值进行编码(例如base64)并将结果用作密钥,或者使用二进制协议。在
相关问题 更多 >
编程相关推荐