防止恶意登录的设计思路

时间:2023-01-06 22:21:41

关于上一篇《关于加密解密设计思路》提到的动态密钥,加密解密的设计思路来保证每次密码,key这类重要信息每次请求都发生变化,但是我用抓包工具截获get,post请求时,如果我密码动态加密完,是keyjafjalewei78732但是我如果没对这个内容做有效期校验,还是照样可以登录系统,进行恶意破坏。

由于我们经常实现这种,都是在一个类似单点登录的跨服务的web系统上,比如A系统发送post请求登录B系统。我们可以做两套安全方案:

一,我们的密钥每天变换一次,加密好的密文还掺杂有密钥随机数和分钟数,接收方可以根据约定好的规则进行解密,解密完可以得知请求是在一分钟内,或者5分钟内的请求key,有人会觉得5分钟太长了吧,但是实际场景中A服务器,B服务器的时间不一定同步,有时还差不止5分钟。这样有人就会问了,刚才keyjafjalewei78732这个东西不是在5分钟内,我可以随意地登录破坏。二,这时我们可以把keyjafjalewei78732放入缓存中,可以设置缓存有效期是20分钟,这样有人恶意发送keyjafjalewei78732,我缓存有这个东西了,照样没法登录。虽然缓存服务器kill后会失效,但是我排除故障,启动服务器的时间应该不止5分钟吧。所以还是比较安全的,可以有效控制恶意登录。