1、指令安全
Redis的危险命令主要有:
命令 | 说明 |
---|---|
flushdb | 清空数据库 |
flushall | 清空所有记录,数据库 |
config | 客户端连接后可配置服务器 |
keys | 客户端连接后可查看所有存在的键 |
禁用的具体做法是,修改服务器的配置文件redis.conf,在SECURITY这一项中,来禁用远程修改 DB 文件地址
我们新增以下命令:
rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command CONFIG ""
rename-command KEYS ""
而如果想要保留命令,但是不能轻易使用,可以重命名命令来设定:
rename-command FLUSHALL abcFLUSHALLabc
rename-command FLUSHDB abcFLUSHDBabc
rename-command CONFIG abcCONFIGabc
rename-command KEYS abcKEYSabc
2、端口安全
- 监听地址
较新版本redis默认监听环回地址(loopback),无需修改;
bind 127.0.0.1 ::1
- 修改端口
port 6380
- 添加密码
配置文件中添加
requirepass yourpassword
命令行执行
redis 127.0.0.1:6379> config set requirepass test123
redis 127.0.0.1:6379> config get requirepass
redis-cli -p 6379 -a test123
主从复制时从库需要设置
masterauth yourpassword
3、Lua脚本安全
Redis从2.6版本开始引入对Lua脚本的支持,通过在服务器中嵌入Lua环境,Redis客户端可以使用Lua脚本,直接在服务端原子的执行多个Redis命令。
使用脚本的好处如下:
1.减少网络开销:本来5次网络请求的操作,可以用一个请求完成,原先5次请求的逻辑放在redis服务器上完成。使用脚本,减少了网络往返时延。
2.原子操作:Redis会将整个脚本作为一个整体执行,中间不会被其他命令插入。
3.复用:客户端发送的脚本会永久存储在Redis中,意味着其他客户端可以复用这一脚本而不需要使用代码完成同样的逻辑。
https://www.cnblogs.com/52fhy/p/9786720.html
正是因为Lua
有强大的功能,我们更应给禁止Lua
脚本由用户输入的内容(UGC)生成。
4、SSL代理
- SSL代理
- spiped