• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Go语言RPC Authorization进行简单ip安全验证的方法

    本文实例讲述了Go语言RPC Authorization进行简单ip安全验证的方法。分享给大家供大家参考。具体分析如下:

    前言:写网络服务,总要考虑安全机制,对ip和网段进行判断是最简单的一个验证机制。之后想做一个类似注册式的安全验证机制,既可以减少配置文件的麻烦,又可以很好的进行安全管理。

    直接上代码:

    复制代码 代码如下:
    package main
    import(
        "net"
        "fmt"
        "time"
        "strings"
    )
    func main(){
        IP_ARRAY := "192.168.1.234,192.168.1.47,192.168.2.0/28"
        servPort:=":7272"
        l,err := net.Listen( "tcp",servPort )
        if err != nil {
            fmt.Printf( "Listen is error" )
            return
        }
        allowList :=strings.Split( IP_ARRAY,"," )
        for{
            conn,err:=l.Accept()
            if err != nil {
                fmt.Printf( "start connect  is error" )
                return
            }
            ipAddr:=conn.RemoteAddr()
            Addr := strings.Split( ipAddr.String(), ":")
            rAddr := net.ParseIP( Addr[0] )
            var authorized bool = false
            for v := range allowList{
                _,ipNet,err := net.ParseCIDR( allowList[v] )
                if err != nil{
                    fmt.Printf( "parse ip net error" )
                    ipHost := net.ParseIP( allowList[v])
                    if ipHost != nil{
                       if ipHost.Equal( rAddr ) {
                          authorized =true
                       }
                    }else{
                        fmt.Printf( "ip list error" )
                    }
                }else{
                    fmt.Printf( "Contains ip " )
                    if ipNet.Contains( rAddr ) {
                        authorized =true
                    }
                }
            }
            if authorized == true{
                curTime:=time.Now()
                fmt.Printf( curTime.Format( "2006-01-02 15:04:05" )  )
                conn.Write( []byte(curTime.Format( "2006-01-02 15:04:05" ) ) )
                time.Sleep( 10)
            }else{
                conn.Close()
            }
        }
    }

    希望本文所述对大家的Go语言程序设计有所帮助。

    您可能感兴趣的文章:
    • Go语言中函数的参数传递与调用的基本方法
    • Go语言调用其它程序并获得程序输出的方法
    • go和python调用其它程序并得到程序输出
    • golang简单读写文件示例
    • golang实现通过smtp发送电子邮件的方法
    • golang基于websocket实现的简易聊天室程序
    • golang使用sort接口实现排序示例
    • golang守护进程用法示例
    • golang模板template自定义函数用法示例
    • golang两种调用rpc的方法
    上一篇:go语言接口用法实例分析
    下一篇:Go语言扫描目录并获取相关信息的方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Go语言RPC Authorization进行简单ip安全验证的方法 语言,RPC,Authorization,进行,