溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Go語言RPC Authorization進(jìn)行簡單ip安全驗證的方法是怎樣的

發(fā)布時間:2021-09-17 15:26:18 來源:億速云 閱讀:163 作者:柒染 欄目:編程語言

本篇文章給大家分享的是有關(guān)Go語言RPC Authorization進(jìn)行簡單ip安全驗證的方法是怎樣的,小編覺得挺實用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

前言:寫網(wǎng)絡(luò)服務(wù),總要考慮安全機(jī)制,對ip和網(wǎng)段進(jìn)行判斷是最簡單的一個驗證機(jī)制。之后想做一個類似注冊式的安全驗證機(jī)制,既可以減少配置文件的麻煩,又可以很好的進(jìn)行安全管理。

直接上代碼:

 代碼如下:

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進(jìn)行簡單ip安全驗證的方法是怎樣的,小編相信有部分知識點(diǎn)可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI