本篇文章给大家分享的是有关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语言RPC Authorization进行简单ip安全验证的方法是怎样的,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。