本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog2,之前的微信号好友位已满,备注:返现
受密码保护的文章请关注“业余草”公众号,回复关键字“0”获得密码
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
腾讯云】1核2G5M轻量应用服务器50元首年,高性价比,助您轻松上云
Redis 这类开源的 Key-Value 数据库被越来越多的公司所采用,于是乎,Redis 已经是成了面试必问的技术了。
昨天,我在外买菜期间,有网友私信我,说上周面试阿里,面了 Redis 的知识,命令之类的一个也没问,只问了 Redis 的密码配置和 Jedis 对配置文件的加解密处理。他当场懵圈了,面试之前看了很多 Redis 的知识,一个也没问到。
今天,我们就一起来说说,Redis 的密码认证配置和 Jedis 的对配置的加密密码的处理!
公司越大,安全性要求越高。为了不让你的数据裸奔,所以,安全认证很有必要。Redis 的密码配置有两种方案。
1、直接在 redis.conf 中配置。
比如,我的 redis.conf 在 /usr/local/etc/redis.conf 位置,那么我就编辑这个配置文件。
找到 #requirepass foobared 这一行,去掉前面的 # 号。设置密码为:xttblog。
requirepass xttblog
保存文件,然后重启 Redis。
brew services restart redis
除了,这一种配置密码的方法,还有一种通过命令的形式修改密码。
2、通过 config set requirepass 命令,配置修改密码。
redis-cli -h 127.0.0.1 -p 6379 -a xttblog
连接上了之后,配置或修改新密码。
config set requirepass xttblog_new_password
然后,无需重启,之后的新链接都必须通过新密码才能才能完成认证。
但是这种方式有一个问题,那就是,当服务重启之后,新密码就失效了,认证密码又被重置成了配置文件中的密码。
需要注意的是,一旦你配置了密码。那么你连接的 Jedis,集群中的 slave 都需要配置密码,否则就无法正常使用了。
配置密码后,Jedis 的使用就非常简单了。只需要在 yml 中,配置密码认证即可。
spring:
redis:
host: 127.0.0.1
port: 6379
password: xttblog_new_password
database: 8
但是,只这样还不行,还需要把配置文件中的内容给加密了。然后在 JedisPool 中,对要使用的密码进行解密。
@Bean
public JedisPool pool(JedisPoolConfig config, JedisProperties jedisProperties) {
return new JedisPool(config, jedisProperties.getHost(), jedisProperties.getPort(), 5000,
decryptPwd(jedisProperties.getPassword()), jedisProperties.getDatabase());
}
private String decryptPwd(String pwd){
//省略解密代码
}
除此之外,大家都知道阿里面试的套路。光会这些还不行,比如,对方继续套路你,原生 Redis 通过 config get 命令可能获取到服务端敏感信息。针对这种情况,如何解决?
如何检验/校验密码设置的复杂度?如何防止 Redis 认证的暴力破解?如何限制访问的 IP 范围?登录认证时,能否记录日志?怎么记录?配置文件中的明文密码如何加密处理?
以上,希望大家对有所帮助。知道自己的不足,赶紧充电吧!
最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加作者微信号:xttblog2。备注:“1”,添加博主微信拉你进微信群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作也可添加作者微信进行联系!
本文原文出处:业余草: » 阿里的 Redis 连环炮面试题,看的资料一个也没用上