华域联盟 Golang Go语言RPC Authorization进行简单ip安全验证的方法

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语言RPC Authorization进行简单ip安全验证的方法

转载请保留出处和原文链接:https://www.cnhackhy.com/109991.htm

本文来自网络,不代表华域联盟立场,转载请注明出处。

作者: sterben

发表回复

联系我们

联系我们

2551209778

在线咨询: QQ交谈

邮箱: [email protected]

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们