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
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
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. *)
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.
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
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.
Tags und Links ruby ruby-on-rails