zoukankan      html  css  js  c++  java
  • 【BUG修复】网络流媒体协议RTSP拉流平台EasyNVR增加鉴权抵御外部攻击优化

    为了保护系统内容和信息的安全性,我们讲过TSINGSEE青犀视频团队在已经上线的视频平台如EasyCVR、EasyGBS等都设置了登录鉴权,并且在调用接口进行二次开发时,也需要先调用登录接口。登录鉴权即系统对用户使用数据业务的合法性和有效性(状态是否为激活)进行检查。

    在一次测试中我们偶然发现EasyNVR在收到强行攻击的时候,攻击者可以在没有获取到登录权限或未授权的情况下,无需输入密码,即可通过直接输入网站控制台主页面地址,或者不允许查看的链接进行访问到控制台主页,并且进行修改及删除等操作。

    api/v1/config/custom
    api/v1/getbaseconfig
    

    于是我们将加强EasyNVR的信息保护机制,全方位防止黑客及不法分子对EasyNVR的侵入。这个问题可能是我们后端没有鉴权造成的,可以通过在EasyNVR后端该路由的地方添加一下鉴权解决这个问题,只有在登录之后才能访问。

    在这个地方添加一个鉴权的方法。将上面代码改为CheckAPIAuth(),这个方法就是鉴权的方法。

    api.GET("/getbaseconfig", CheckAPIAuth(), API.GetBaseConfig)
    

    另外一个接口也是如此。

    将上面代码添加一个鉴权方法改为如下代码:

    config.GET("/custom", CheckAPIAuth(), GetCustom)
    
    func CheckAPIAuth() gin.HandlerFunc {
       return func(c *gin.Context) {
          auth := utils.Conf().Section("base_config").Key("api_auth").MustBool(false)
          if auth {
             // SetUsername中间件已经将uname存进gin上下文中,直接从上下文获取
             uname, _ := c.Get("username")
             if uname == "" || uname == nil {
                c.AbortWithStatusJSON(http.StatusUnauthorized, "Unauthorized")
                return
             }
          }
          c.Next()
       }
    }
    

    再次尝试非用户登录,解决效果如下:

    TSINGSEE青犀视频云边端架构智能分析平台都是通过token进行的登录鉴权,大家可以参考《Easy系列视频平台中token机制全解》一文了解一下。TSINGSEE青犀视频研发团队上线了很多优秀的视频平台,并且提供测试账号供大家测试,欢迎大家了解。

  • 相关阅读:
    .NET、C#和ASP.NET,ASP.NET MVC 四者之间的区别
    Row_Number()显示行号
    iframe高度宽度自适应(转)
    Windows CMD命令大全(转)
    wndows系统命令总结
    删除ORACLE目录OCI.dll文件无法删除 (转)
    IE8兼容性调试及IE 8 css hack
    backbone学习笔记:视图(View)
    js中toFixed() 的使用(转)
    backbone学习笔记:集合(Collection)
  • 原文地址:https://www.cnblogs.com/EasyNVR/p/14139874.html
Copyright © 2011-2022 走看看