2013-05-25 9 views
9

Ich habe die neueste Version des Brakeman Gems installiert, um mir bei der Anwendungssicherheit von Rails zu helfen.Ruby on Rails 3.2.13 - Brakeman - Sitzungsgeheimnis sollte nicht in der Versionskontrolle enthalten sein

Ich habe mehrere Rails-Anwendungen, die ich auf zwei Servern habe, einen für die Entwicklung und den anderen für die Produktion. Als ich die Brakeman-Berichte über meine Anwendungen durchführte, markierten die meisten von ihnen config/initializers/secret_token.rb mit der folgenden hohen Sicherheitslücke.

Dies ist das erste Mal, dass ich diesen Fehler gesehen habe, seit ich eine ältere Version von Brakeman vor Monaten ausgeführt habe.

Von was ich bis jetzt recherchiert Rails automatisch erzeugt das geheime Token, wenn Schienen neue Anwendung Name ausgeführt wird. Bis jetzt war mir das nicht bewusst. Anscheinend schützt Rails diese Datei nicht, wenn ich beschloß, irgendeine meiner Anwendungen nach Github zu verschieben, wäre die Information für irgendjemanden bei Github verfügbar, der auf die Anwendung zugreift. Zu dieser Zeit lade ich nicht zu GitHub hoch, aber ich möchte Informationen darüber, wie ich das secure_token von config/initializers/secret_token.rb verschiebe, um die Sicherheitslücke in meinen Anwendungen zu schließen.

Ein Blogbeitrag, den ich gelesen habe, schlug vor, dass ich das geheime Token in eine ENV-Variable injiziere. Wird die Anweisung von config/initializers/secret_token.rb nach config/environment.rb verschoben, um das Problem zu lösen? Wenn das der Fall ist, werde ich diese Aufgabe zu meiner Aufgabenliste in der Rails-Entwicklung hinzufügen.

Jede Hilfe wäre willkommen.

Antwort

12

Diese besondere Nachricht in Brakeman wurde für mich zum Schweigen gebracht, wenn ich geheime Informationen in ENV Variablen legte, wie Sie erwähnt. Persönlich verwende ich gerne den Figaro Edelstein dafür, aber ich denke dotenv ist auch populär.

einige andere Ressourcen, die Sie in Bezug auf diese von Interesse sein können, sind:

+1

Der Vorschlag, den ich über die ENV-Variable erwähnt habe, kam aus dem Code Climate Blogpost. Ich habe es gelesen, bevor ich meine Frage gepostet habe. Ich war mir nicht sicher, wie ich es zur ENV-Variable machen sollte, als ich meine Frage veröffentlichte. Aber als ich mir environment.rb ansah, sah ich, dass die Darstellungsformate identisch waren. Also habe ich die Aussage von secret_token dorthin verschoben. Die Nachricht ist verschwunden. Ich habe den Code Climate Blogeintrag in meinen Lesezeichen. Ich werde Figaro anschauen, die ich in früheren Suchen gesehen habe. Ich werde auch auf dotenv schauen. –

+5

Wenn environment.rb in Ihrem Quellcode-Steuerelement gespeichert ist, ist es nicht sicherer als secret_token.rb. – Justin

1

Ich bin mir nicht sicher, wie das Verschieben des Sitzungsgeheimnisses in eine andere Datei einen Unterschied machen würde. Im Wesentlichen sollte das geheime Token wie ein Passwort behandelt werden.

This blog post from Phusion untersucht einige verschiedene Optionen zum Bereitstellen des Sitzungsschlüssels zum Zeitpunkt der Bereitstellung.

+0

ich diese Zeilen lesen posten, bevor Sie meine Frage stellen. Sie schlugen Option 2 zusammen mit Patching Rails vor. Einige der Optionen gehen davon aus, dass Sie Capistrano verwenden. Ich benutze es nicht. Ich lerne immer noch Dinge über Rails, besonders in Bezug auf Sicherheit. Leider enthält der Blogpost viele Informationen, die mir nicht bekannt sind. –