Nutzen Sie das Gin-Framework von Go, um Ihre Web-Apps mit IP-Whitelisting zu sichern.

Im modernen Bereich der Internettechnologie ist es immer wichtiger, die Sicherheit von Webanwendungen zu gewährleisten und Server können nicht genug betont werden, da die Häufigkeit und Komplexität von Cyberangriffen weiterhin anhält erhöhen. Aus diesem Grund steigt auch der Bedarf an robusten und modernen Sicherheitsmaßnahmen für webbasierte Systeme.

Das Whitelisting von IP-Adressen ist eine der vielen modernen Techniken zur Sicherung von Webanwendungen, Servern und APIs. Obwohl es so ist Wird nur in bestimmten Fällen verwendet und ist eine empfohlene Methode, um den Zugriff auf Ressourcen im Internet einzuschränken erforderlich.

Was ist IP-Whitelisting?

IP-Whitelisting ist einfach eine Art des Whitelistings Dies kann als Web-Sicherheitsmaßnahme bezeichnet werden, mit der der Zugriff auf ein Netzwerk oder eine Ressource auf eine definierte IP-Adresse oder einen Bereich von IP-Adressen beschränkt wird, die als berechtigt gelten, auf das System zuzugreifen.

instagram viewer

Wenn IP-Whitelisting in einem System implementiert ist, können nur die IP-Adressen, die zur Whitelist hinzugefügt werden, auf das System und die darauf befindlichen Ressourcen zugreifen, während andere IP-Adressen blockiert werden.

IP-Whitelisting ist eine weitverbreitete Methode zur Sicherung sehr kritischer Daten, die nur einer Einzelperson oder einer bestimmten Gruppe von Personen zugänglich und vor Hackerangriffen geschützt sein sollten.

Ein häufiges Beispiel für IP-Whitelisting ist MongoDB Atlas, wo Sie Richten Sie einen Mongo-Datenbankcluster in der Cloud ein und Sie werden aufgefordert, Ihre aktuelle IP-Adresse zu einer Liste hinzuzufügen, sodass Anfragen an Ihre Datenbank oder Ihren Cluster nur zulässig sind, wenn sie von Ihrem Computer kommen.

Wann sollten Sie IP-Whitelisting implementieren?

IP-Whitelisting ist nicht etwas, das jedes System oder jede Anwendung benötigt. Es gibt Fälle, in denen es empfehlenswert und angemessen ist, es in einer Anwendung oder einem System zu implementieren. Im Folgenden finden Sie einige Beispiele für Szenarien, in denen Sie die Implementierung einer IP-Whitelist in Betracht ziehen sollten.

  • Wenn die Anwendung nur für die Nutzung durch eine bestimmte Benutzergruppe bestimmt ist, beispielsweise Mitarbeiter oder Kunden eines bestimmten Unternehmens.
  • Wenn Sie möchten, dass die Anwendung nur von einem bestimmten Standort aus zugänglich ist, können Sie einen Bereich von IP-Adressen, die nur für diesen Standort gelten, auf die Whitelist setzen.
  • Wenn die Anwendung verwendet wird, um Zugriff auf vertrauliche Informationen oder geistiges Eigentum zu ermöglichen, beispielsweise eine Forschungsdatenbank oder proprietäre Software.
  • Wenn die Anwendung privat, aber über das Internet zugänglich ist und vor externen Bedrohungen wie DDoS-Angriffen oder Malware-Infektionen geschützt werden muss.
  • Wenn die Anwendung auf einer öffentlichen Cloud-Plattform gehostet wird und vor unbefugtem Zugriff durch andere Mieter oder Benutzer der Plattform geschützt werden muss.
  • Wenn die Anwendung in einer regulierten Branche wie dem Gesundheitswesen oder dem Finanzwesen verwendet wird, in der die Einhaltung von Sicherheitsstandards erforderlich ist.

Es gibt noch viele weitere Fälle, aber grundsätzlich sollten Sie die Implementierung einer IP-Whitelist in Betracht ziehen, wenn eine Anwendung über eine der oben genannten Eigenschaften verfügt.

So implementieren Sie IP-Whitelisting in Go

Go ist eine beliebte moderne Programmiersprache zum Aufbau von Webservern und APIs gebündelt mit allem, was Sie zum Erstellen einer standardmäßigen und sicheren Webanwendung benötigen.

In diesem Abschnitt wird die Verwendung des Gin-Frameworks von Go zur Implementierung des Beispielservers und der IP-Whitelisting-Logik demonstriert, bei der es sich um eine Middleware-Funktion handelt. Sie können das Gin-Framework in einem Projekt installieren, indem Sie den folgenden Befehl ausführen.

Holen Sie sich github.com/gin-gonic/gin

Nach der Installation des Gin-Frameworks können Sie nun mit der Implementierung der IP-Whitelisting-Middleware fortfahren. Abhängig von Ihrer Projektarchitektur können Sie an einer beliebigen Stelle in Ihrem Projekt eine neue Middleware-Datei erstellen. Hier ist die Implementierung der Middleware-Funktion:

Paket Middleware

importieren (
"github.com/gin-gonic/gin"
„net/http“
)

FunktionIPWhiteListMiddleware(Whitelist Karte[Zeichenfolge]bool)Gin.HandlerFunc {
zurückkehrenFunktion(c *gin. Kontext) {
BenutzerIP := c. ClientIP()

Wenn !whitelist[userIP] {
C. AbortWithStatusJSON(http. StatusVerboten, Gin. H{
"Fehler": „Sie sind nicht berechtigt, auf diese Ressource zuzugreifen!“,
})
} anders {
C. Nächste()
}
}
}

Im obigen Code ist die IPWhiteListMiddleware Die Funktion ist so definiert, dass sie eine definierte IP-Adress-Whitelist als Argument akzeptiert. Die Whitelist ist als Kartendatenstruktur implementiert, sodass IP-Adressen problemlos Werte zugewiesen werden können WAHR Und FALSCH um auf deren Erreichbarkeit hinzuweisen.

Dann verwendet die Funktion das Gin-Framework ClientIP Funktion, um die aktuelle IP-Adresse des Benutzers abzurufen, der versucht, die Anfrage zu stellen, und prüft, ob sie in der Whitelist vorhanden ist und mit a WAHR Wert. Wenn es nicht gefunden wird oder ein Wert von gefunden wird FALSCH, bricht die Middleware die Anfrage ab und gibt einen 403-Fehler (Verboten) zurück.

Ein Beispielendpunkt zum Testen dieser Funktionalität kann implementiert werden, um zu sehen, wie die IP-Whitelist funktioniert. Der folgende Code ist ein Programm, das eine Whitelist definiert und zwei Endpunkte implementiert (einen eingeschränkten und einen uneingeschränkten).

Paket hauptsächlich

importieren (
"github.com/gin-gonic/gin"
„go-ip-whitelist/middlewares“
„net/http“
)

var IPWhitelist = Karte[Zeichenfolge]bool{
"127.0.0.1": WAHR,
"111.2.3.4": WAHR,
"::1": WAHR,
}

Funktionhauptsächlich() {
Router := gin. Standard()

Router. ERHALTEN("/Index", Funktion(c *gin. Kontext) {
C. JSON(http. StatusOK, Gin. H{
"Nachricht": „Willkommen bei meiner sicheren Bewerbung!“,
})
})

eingeschränkte Seite := Router. Gruppe("/")
eingeschränkte Seite. Verwenden Sie (Middlewares. IPWhiteListMiddleware (IPWhitelist))

eingeschränkte Seite. ERHALTEN(„/adminZone“, Funktion(c *gin. Kontext) {
C. JSON(http. StatusOK, Gin. H{
"Nachricht": „Dieser Endpunkt ist mit IP-Whitelisting gesichert!“,
})
})

Router. Laufen(":3333")
}

Wenn die Anwendung ausgeführt wird mit Führen Sie main.go aus, startet der Server auf Port 3333 und Sie können Testanfragen an den ausführen /adminZone Endpunkt, um zu sehen, wie die Middleware funktioniert. Sie können auch den Wert der Localhost-IP in der Whitelist zwischen umschalten WAHR Und FALSCH.

Hier ist eine Beispielanfrage, die zeigt, wenn die IP-Adresse nicht auf der Whitelist steht oder ihr Wert in der Whitelist auf gesetzt ist FALSCH:

Hier ist eine weitere Anfrage, wenn die IP-Adresse in der IP-Whitelist vorhanden ist und ihr Wert auf gesetzt ist WAHR:

Sie erhalten möglicherweise eine 403-Fehlerantwort (verboten), wenn Sie das Programm testen, indem Sie die generische Localhost-IP-Adresse (127.0.0.1) auf die Whitelist setzen. Die IP-Adresse, die höchstwahrscheinlich lokal funktioniert, ist ::1 Dies ist das IPv6-Äquivalent von 127.0.0.1 (Ipv4). Versuchen Sie es mit Whitelisting ::1 Wenn 127.0.0.1 nicht funktioniert, können Sie auch versuchen, das zu protokollieren Benutzer-IP Variable in der Konsole, um die genaue verwendete Adresse anzuzeigen.

Sichern von Web-Apps mit IP-Whitelisting

In der heutigen Welt ist die Sicherheit von Webanwendungen und -systemen von größter Bedeutung, da die Technologie ständig voranschreitet. IP-Whitelisting ist eine sehr einfache und effektive Möglichkeit, den Zugriff auf Ressourcen im Internet auf vertrauenswürdige Quellen zu beschränken.

Bisher wurde in diesem Artikel das Konzept des IP-Adressen-Whitelistings ausführlich behandelt, wann es implementiert werden sollte und wie es in Go mithilfe des Gin-Frameworks implementiert werden sollte. Um unnötige technische Kosten zu vermeiden, wird empfohlen, IP-Whitelisting nur dort zu implementieren, wo es sinnvoll ist.