您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。