Ich muss ein kleines Stück Daten (weniger als 10 Zeichen) in einem Cookie in Rails speichern und ich brauche es, um sicher zu sein. Ich möchte nicht, dass irgendjemand in der Lage ist, diese Daten zu lesen oder ihre eigenen Daten zu injizieren (da dies die App für viele Arten von Angriffen öffnen würde). Ich denke, das Verschlüsseln des Inhalts des Cookies ist der Weg zu gehen (sollte ich es auch unterschreiben?). Was ist der beste Weg, um es zu tun?
Im Moment mache ich das, was sicher aussieht, aber viele Dinge sahen sicher für Leute aus, die viel mehr über Sicherheit wussten als ich und dann wurde entdeckt, dass es nicht wirklich sicher war.
Ich spare das Geheimnis auf diese Weise:
%Vor%und dann lese ich es so:
%Vor%Ist das sicher? Gibt es bessere Möglichkeiten, es zu tun?
Update : Ich weiß über die Rails-Sitzung und wie sie sicher ist, sowohl durch das Signieren des Cookies als auch durch das optionale Speichern des Inhalts der Session-Server-Seite und ich benutze die Sitzung für das, was sie ist zum. Aber meine Frage hier ist über das Speichern eines Cookies, eine Information, die ich nicht in der Sitzung will, aber ich brauche es immer noch, um sicher zu sein.
Ich poste gerade JacobM 's Antwort, die er gelöscht hat, weil es die richtige Antwort war und darauf hingewiesen hat ich in die richtige Richtung. Wenn er es löscht, lösche ich dieses und wähle seine als beste Antwort aus.
Erstens, wenn Sie
encrypt_and_verify
anstelle vonencrypt
verwenden, wird es Unterschreibe den Cookie für dich.Wenn es jedoch um Sicherheit geht, verlasse ich mich immer lieber darauf Lösungen, die in der Öffentlichkeit überprüft wurden, anstatt meine eigenen zu rollen. Ein Beispiel wäre das Cookie mit verschlüsselten Cookies .
Festlegen eines sicheren Cookies
%Vor%Zugriff auf den Cookie
%Vor% Der Cookie wird mit ActionController :: Base.cookie_verifier_secret signiert. Sie können cookie_verifier_secret
in der Initialisierungsdatei festlegen.
Wie KandadaBoggu sagt, sieht es so aus, als ob Sie eine Sitzungsvariable hätten. Sitzungsvariablen werden standardmäßig verschlüsselt und in Cookies gespeichert. Wenn Sie jedoch den Inhalt von config/initializers/session_store.rb
betrachten, finden Sie etwa Folgendes:
Was mir den Vorschlag macht, dass Sie die Datenbank für Sitzungen anstelle des Cookie-basierten Standards verwenden sollten, der nicht zum Speichern hoch vertraulicher Informationen verwendet werden sollte. Die vorgekochte Migration macht alles sehr einfach einzurichten, so dass nur ein sehr geringer Aufwand entsteht. Sobald dies erledigt ist, gibt es im Prinzip keinen Overhead mehr, wenn Sie zu einem späteren Zeitpunkt neue geheime Informationen hinzufügen müssen!
Tags und Links security ruby-on-rails encryption cookies