Moin Moin,

ich wollte aus dem Buch Advanced Rails Recipes den Tipp mit acts_as_secure umsetzen. Das läuft auch alles wunderbar, das Plugin sorgt dafür, das alle Attribute, die in einem Model Objekt in der Datenbank gespeichert werden sollen und in der Datenbank ein Feld vom Typ Binary haben, verschlüsselt abgelegt werden. Dabei wird jedes mal eine Model Klasse MasterCryptoProvider zur Hilfe genommen, die die Daten verschlüsselt:

require 'ezcrypto'

class MasterCryptoProvider
CONFIG = YAML.load_file(RAILS_ROOT + '/config/crypto.yml') [ENV['RAILS_ENV']].symbolize_keys

  class << self
    def encrypt(field)
      key.encrypt field
    end

    def decrypt(field)
      key.decrypt field
    end

    def key
      EzCrypto::Key.with_password CONFIG[:master_key], CONFIG[:salt]
    end

  end
end

Bei meinem Testlauf mit RSpec gibt es Probleme, denn ich verwende fixtures - und so, wie ich das verstanden habe werden die ohne Umwege in die Datenbank geschoben. Dabei findet keine Verschlüsselung der Daten statt. Wenn dann aber später bei den Tests die Daten ausgelesen werden gibts nen Fehler, da die unverschlüsselten natürlich nicht entschlüsselt
werden können.
Deshalb habe ich versucht mir in der Fixtures Datei den MasterCryptoProvider zur Hilfe zu nehmen und die Daten erst zu verschlüsseln und dann in die Datenbank zu speichern:

addresses.yml:

daniel:
        firstname:  <%= MasterCryptoProvider.encrypt("Daniel") %>
        lastname: Boekhoff

peter:
        firstname: Peter
        lastname: Mueller

Als ich den Test so hab laufen lassen wurde der firstname von daniel verschlüsselt in der Datenbank gespeichert, danach habe ich freudig in einem weiteren Versuch den lastname verschlüsseln wollen. Problem war dann, dass der Datensatz Peter nicht mehr vollständig in die Datenbank geladen wurde, es war zwar ein zweiter Eintrag da, aber ohne ID und ähnliches.

Jetzt überlege ich was der Fehler sein könnte, gibt es Probleme während des Durchlaufs durch
die yml Datei den MasterCryptoProvider mehrfach zu installieren, .....
Ist mein Ansatz überhaupt richtig, gibt es evtl. noch einen besseren, anderen Ansatz die Fixtures
dynamisch zu verändern.


Ich würde mich über ein Antwort sehr freuen!

Viele Grüße,

Daniel

 _______________________________________________
rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug

Antwort per Email an