मैं एक छोटा डेमो ऐप सेट कर रहा हूं जिसे मैं अभी के लिए अपने घर के आईपी पते से ही एक्सेस करना चाहता हूं, और शायद तकनीकी लोगों का एक छोटा सा समूह जिसके साथ मैं समन्वय और साझा करूंगा।

मैंने यहां रीडमी को देखा, लेकिन नहीं मिला: https://github.com/gin-gonic/gin

--- जिन में केवल विशेष आईपी पते के लिए किसी ऐप पर पहुंच को सीमित करने के लिए विहित, न्यूनतम उदाहरण क्या है?

(इसके अलावा, किसी भी कारण से यह 2018 में एक विशेष रूप से असुरक्षित विचार है?)

1
Mittenchops 4 अक्टूबर 2018, 06:56

1 उत्तर

सबसे बढ़िया उत्तर

इससे पहले कि मैं आपके प्रश्न का उत्तर दूं, मैं यह कहना चाहूंगा कि कार्यक्रम के बजाय फ़ायरवॉल नियमों का उपयोग करके ऐप तक पहुंच को सीमित करना अधिक व्यावहारिक होगा, लेकिन मैं पीछे हट जाता हूं।

आपके प्रश्न का उत्तर देने के लिए, जिन godoc संदर्भ को देखने के बाद मैंने पाया कि < a href="https://godoc.org/github.com/gin-gonic/gin#Context.ClientIP" rel="noreferrer">संदर्भ संरचना में एक ClientIp() विधि है जो:

वास्तविक क्लाइंट आईपी को वापस करने के लिए एक सर्वोत्तम प्रयास एल्गोरिदम लागू करता है, यह एक्स-रियल-आईपी और एक्स-फॉरवर्डेड-फॉर को रिवर्स-प्रॉक्सी के साथ ठीक से काम करने के लिए पार्स करता है: nginx या haproxy। X-Forwarded-For X-Real-Ip से पहले का उपयोग करें क्योंकि nginx प्रॉक्सी के IP के साथ X-Real-Ip का उपयोग करता है।

इसलिए, यदि आप ऐप में आईपी फ़िल्टरिंग करने के लिए तैयार हैं, तो आप उस विधि द्वारा लौटाए गए मान के आधार पर फ़िल्टर कर सकते हैं।

गीथूब पेज पर दिए गए मूल उदाहरण का उपयोग करना:

package main

import "github.com/gin-gonic/gin"

var Whitelist []string = []string{"1.2.3.4"}

func main() {
    r := gin.Default()
    r.GET("/ping", func(c *gin.Context) {
        whitelisted := false
        for _, v := range Whitelist {
            if v == c.ClientIP() {
                whitelisted = true
            }
        }
        if whitelisted {
            c.JSON(200, gin.H{
                "message": "pong",
            })
        } else {
            c.JSON(403, gin.H{})
        }
    })
    r.Run() // listen and serve on 0.0.0.0:8080
}
5
H. Ross 4 अक्टूबर 2018, 04:50