Railsのクッキーに少量のデータ(10文字未満)を保存する必要があります。私は誰もそのデータを読んだり、自分のデータを挿入したりすることはできません(これは、さまざまな種類の攻撃に対してこのアプリケーションを開くためです)。私はクッキーの内容を暗号化することが(私はそれに署名する必要がありますか?)行く方法だと思います。それを行う最善の方法は何ですか?Railsで暗号化されたCookieを保存する
今私はこれをやっていますが安全ですが、多くのことがセキュリティよりもはるかによく知っていて、実際には安全ではないことが分かった人々にとって安全です。
私はこのように秘密にして保存しています:
encryptor = ActiveSupport::MessageEncryptor.new(Example::Application.config.secret_token)
cookies[:secret] = {
:value => encryptor.encrypt(secret),
:domain => "example.com",
:secure => !(Rails.env.test? || Rails.env.development?)
}
をして、私はこのようにそれを読んでいる:
encryptor = ActiveSupport::MessageEncryptor.new(Example::Application.config.secret_token)
secret = encryptor.decrypt(cookies[:secret])
は、安全ですか?それを行うより良い方法はありますか?
更新:私はRailsのセッションについて知っているとどのようにそれがクッキーを署名することにより、任意のセッションのサーバ側のコンテンツを保存し、私はそれが何のためにあるのかのセッションを使用して行うことで、両方の、安全です。しかし、ここで私の質問は、私はセッションに欲しくない情報の一部であるクッキーを保存することですが、私はまだそれが安全であることが必要です。
なぜ、サーバーサイドではなくクッキーに格納する必要があるのですか?定義上より安全です。 – Russell
@russellまあ、ブラウザに何かを保存する必要がありますよね?さもなければ、それをもう一度特定することはできません。それが実際のデータであろうとテーブル上のレコードのIDであろうと、それはデータのサイズやその他の考慮事項に関する好みと必要性の問題です。私が保存しているのは、すでにテーブルのレコードのIDです。私は別のテーブルを作ることができましたが、この場合は無駄に思えます。 – Pablo
DBを使用するようにデフォルトのセッションストアを変更すると、テーブルなどの作成に関するオーバーヘッドがほとんどなく、必要なセキュリティが得られると思うので、答えを追加しました。 – Russell