随笔 - 936  文章 - 0  评论 - 3  阅读 - 30万

EasyGBS国标视频平台新增IP登录锁定,增强用户登录安全性

自从公安部提出了国标GB28181协议之后,国标协议就在视频监控领域特别火热。EasyGBS国标视频云服务平台也是基于国标GB28181协议而生,在安防行业应用比较广泛的视频监控平台。

EasyGBS平台支持国标协议的设备接入,并提供RTSP、RTMP、FLV、HLS、WebRTC等多种格式的视频流进行分发,能够为大数据平台的搭建提供视频能力的支持,在很多线下项目中落地应用。

随着网络安全问题的频发,EasyGBS也增强了对用户安全性的考虑,近期我们在EasyGBS新增了一个IP登陆错误次数的功能,用户登录错误超过一定次数,则锁定对应IP。今天我们来和大家分享一下该功能开发的实现过程。

首先,如果用户名和密码错误,则返回给用户“用户名或密码错误”。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
clientMsg := c.ClientIP() + username
if !strings.EqualFold(user.Password, form.Password) {
   errorCount(clientMsg)
   AbortWithString(c, http.StatusUnauthorized, "用户名或密码错误")
   return
}
 
// 错误统计
func errorCount(msg string) {
   if gCfg.LoginErrorLockEnable {
      errorLogin, ok := global.LoginError.Get(msg)
      preCount := 1
      if ok {
         preCount = errorLogin.ErrorCount + 1
      }
      global.LoginError.Set(msg, &global.LoginErrorData{ErrorCount: preCount, LastTime: time.Now().Unix()})
   }
}

  

错误统计的代码原理,是如果用户登录错误,则将对应的 clientMag 添加到缓存中,错误次数加1。

如果错误次数超过配置中的错误次数,则再次调用代码,直接返回不允许调用该接口。

clientMsg := c.ClientIP() + username
if cfg.LoginErrorLockEnable {
   errorLogin, ok := global.LoginError.Get(clientMsg)

   if ok && uint(errorLogin.ErrorCount+1) > cfg.LoginErrorNumbers {
      if errorLogin.LastTime != 0 && time.Now().Unix()-errorLogin.LastTime >= int64(cfg.LoginErrorLockTime*60) {
         global.LoginError.Delete(clientMsg)
      } else {
         errMsg := "IP:" + c.ClientIP() + ",用户:" + username + " 登录密码连续错误多次,请 " + strconv.Itoa(int(cfg.LoginErrorLockTime)) + " 分钟后再试。"
         AbortWithString(c, http.StatusBadRequest, errMsg)
         return
      }
   }
}

实现效果如下图所示:

多次登录错误则锁定IP的功能,有利于保障用户账号登录的安全性。

去年我们对EasyGBS、EasyDSS等视频平台陆续更换了新内核版本。新内核版本性能更加稳定,感兴趣的用户可以前往官网进行使用体验。我们也将不定期在博客更新关于EasyGBS平台的功能开发及优化、FAQ、配置操作等内容,欢迎大家关注我们的更新,或留言与我们互动。

posted on   EasyGBS  阅读(151)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结
历史上的今天:
2021-01-14 国标GB28181协议视频智能监控平台EasyGBS级联到上级的设备无法回看设备录像是什么原因?
2021-01-14 国标GB28181协议视频监控平台EasyGBS编译ARM版播放视频时nginx占用内存下降困难问题优化
2021-01-14 【解决方案】如何通过国标GB28281协议视频平台EasyGBS搭建一套停车场统一管理监控系统?
2021-01-14 国标GB28181协议视频网页无插件直播平台EasyGBS级联过程中针对卡顿如何优化?
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示