IP-Adressfilterung

8

Ich versuche, die IP-Adressfilterung für meine Rails SaaS-App zu implementieren. Kurz gesagt, ich möchte, dass Administratoren eine oder mehrere IP-Adressen (oder eine Reihe von IP-Adressen) angeben können, und dann akzeptiert meine App nur Anforderungen an ihre Instanz von den angegebenen Adressen.

Ich betrachte IPAddress ( Ссылка ) für das Parsen / Validieren jeder Adresse / Adressbereich. Passt das gut oder gibt es bessere / geeignetere Bibliotheken?

Hat jemand diese Art der Filterung implementiert, die einen Ansatz beschreiben könnte, der für sie funktioniert hat oder gibt es irgendwelche Probleme, um die ich mich kümmern muss?

Gibt es alternativ eine vorhandene Ruby-Bibliothek, die all das automatisch handhabt, die sich meinem Googeln entzogen hat?

Vielen Dank, Asche

    
Ash 21.09.2010, 21:07
quelle

3 Antworten

6

ipadresse ist eine wunderbare Bibliothek (ich kenne den Autor), aber Sie werden es wahrscheinlich nicht brauchen, wenn Sie nicht planen Führen Sie einige erweiterte Manipulation von IP-Adressen.

In der Tat ist der einfachste Weg zu

  1. speichert das Array der zu filternden IP-Adressen. Sie können die Zeichenfolgendarstellung (192.168.1.1) oder die lange int-Darstellung verwenden. Mit der String-Version können Sie sogar Wildcards (192.168.1. *)

  2. zulassen
  3. Konfigurieren Sie dann einen before_filter im Controller, der die Liste der gesperrten IPs lädt und eine einfache Stringübereinstimmung durchführt, um zu überprüfen, ob der aktuelle request.ip_address ( request.remote_ip in Rails 3) mit einer gesperrten IP übereinstimmt. Wenn dies der Fall ist, wird auf die Fehlerseite umgeleitet.

Wie Sie sehen, müssen Sie die IPs nicht einmal in IP-Objekte konvertieren, es sei denn, Sie müssen andere Manipulationen durchführen.

    
Simone Carletti 21.09.2010, 21:19
quelle
4

Etwas spät zur Party, aber da ich nach etwas ähnlichem gesucht habe und in dieses nette Rubin-Juwel gestoßen bin, werde ich es hier hinzufügen, um zu dem Thread beizutragen. Ich mag @ Simones Lösung, aber wenn Sie mehr Kontrolle brauchen, dann ist Rack::Attack vielleicht eine gute Wahl.

  

Ссылка

     

Rack :: Angriff !!!

     

Ein DSL zum Blockieren & amp; Missbrauch von Kunden einschränken

    
chriskk 24.04.2014 02:16
quelle
3

Ich denke, Sie können mit den integrierten Routing-Funktionen von Rails 3 erreichen, was Sie wollen. Gregg Pollack stellt Rails 3 Action Dispatch vor und erwähnt (aus dem Screencast) :constraints => {:ip => /192\.168\.1\.\d{1,3}}/} , wo du dich befindest kann einen regulären Ausdruck bereitstellen, der dem IP-Adressbereich entspricht, den Sie zulassen möchten.

Erweitern Sie das etwas weiter, schauen Sie sich die erweiterten Constraints an und ihr Beispiel demonstriert das Ziehen einer Liste von IPs aus der Datenbank auf die schwarze Liste setzen und prüfen, ob request.remote_ip in der Liste der IPs auf der Blacklist steht. Es sieht so aus, als ob Sie eine Liste mit akzeptierten (aka Whitelist IPs) wollen, aber der Code wäre fast identisch mit dem Beispiel in Rails Guides.

Damit ich Ihre Admin-Ansicht erstellen kann, um genehmigte IP-Adressen eingeben zu können, kann das Anwendungs-Routing diese Liste für eingehende Anforderungen abrufen.

    
Andy Atkinson 22.09.2010 03:45
quelle

Tags und Links