六、TCP/IP协议分析-Redis认证协议
Redis的数据包为序列化后的文本协议RESP (REdis Serialization Protocol) ,human-readable(明文可读),由0d0a切分内容,相比postgresql、mysql、mongodb解析起来要简单快速的多,当然安全性也欠缺,嗅探成本低
“redis的安全设计是在"Redis运行在可信环境下", 在生产环节运行时不允许外界直接连接到Redis服务器上,而应该通过应用程序进行中转”
RESP的通信实例
a.客户端到服务端发送的数据
b. 服务端到客户端的响应数据由上面两幅图,可知全是明文传输,其中RESP中的数据类型由特殊的前缀标识符来区分
__RESP_DATA_TYPE = {
'+': 'Simple Strings', #例如+OK
'-': 'Errors', #例如 -ERR invalid password
':': 'Integers',#整型
'$': 'Bulk Strings', #字符串
'*': 'Arrays'#数组
}
redis认证过程
客户端->服务端发送 auth [password]命令
例如
auth apple对应的数据为
*2
$4
auth
$5
apple
auth dragon对应的数据为
*2
$4
auth
$6
dragon
服务端->客户端回应 认证结果
例如
认证失败对应的数据为
-ERR invalid password
认证成功对应的数据为
+OK
参考:
https://redis.io/topics/protocol
来源:碳基体
评论