BackEnd

Ruby2.4でCookieを手動で復号する際に発生したエラーの対処

投稿日:2017年6月2日 更新日:

はじめに

こんにちは、onoです。

現在開発中のアプリケーションでログインAPIのテストコードを実行したところ、
Ruby2.3.1ではうまくいっていたCookieの復号が、Ruby2.4.1ではエラーが発生したので調査しました。

前提条件

Ruby 2.4.1
Rails 5.1.0

発生したエラー

実際のコード

実際のコードは下記の通りです。

Ruby 2.3.1で開発していた前のアプリケーションでは、上記のコードで復号できていました。
ところが、Ruby 2.4.1で開発中のアプリケーションではエラーが発生しました。

エラー詳細

6行目の encryptor.decrypt_and_verify の箇所で下記のエラーが発生しました。

 

原因

どうやら、Rubyの openssl が変更になったために発生したようです。

今までは、keyに長すぎる値を渡すと自動的に適当な長さに切り取っていたようですが、正しい長さのkeyを渡さないと例外が発生するようになりました。
参考:http://nisshiee.hatenablog.jp/entry/2017/04/17/192703

どう対処したか

修正後のコード

修正前は64byteのkeyが生成されていましたが、ActiveSupport::KeyGeneratorでkeyを生成するようにしたところ、エラーが解消されました。

参考:https://stackoverflow.com/questions/41474176/how-to-decrypt-a-rails-5-session-cookie-manually

blog-page_footer_336




blog-page_footer_336




-BackEnd

執筆者:

免責事項

このブログは、記事上部に記載のある投稿日時点の一般的な情報を提供するものであり、投資等の勧誘・法的・税務上の助言を提供するものではありません。仮想通貨の投資・損益計算は複雑であり、個々の取引状況や法律の変更によって異なる可能性があります。ブログに記載された情報は参考程度のものであり、特定の状況に基づいた行動の決定には専門家の助言を求めることをお勧めします。当ブログの情報に基づいた行動に関連して生じた損失やリスクについて、筆者は責任を負いかねます。最新の法律や税務情報を確認し、必要に応じて専門家に相談することをお勧めします。

関連記事

rails

RailsでERBからJavaScriptにhashを渡す方法

はじめに 以前、選択したプルダウンメニューに応じて別のプルダウンメニューの内容を動的に書き換えたいケースがありました。 その際、カスタムデータ属性を利用してERBファイルからJavaScrptにhas ...

aws

Amazon ECSのタスク定義について

はじめに 前回の記事ではAmazon ECSの機能を全般的に広く浅く紹介しました。今回はAmazon ECSのタスク定義について詳しく調べてみました。 Amazon ECSのタスク定義についておさらい ...

RSpecの個人的Tips集〜その1〜

はじめに みなさん、テストコードは書かれているでしょうか? 私も極力書くよう心がけているつもりですが、忙しかったり、難易度が高いテストだとすぐにサボってしまいます。 私は主にRSpecを使用しています ...

【Git】マージコミットを消したい

はじめに こんにちは、tonnyです。 今回はGitのケーススタディ的なものを書きたいと思います。 反面教師として利用してください。 例えばこんなことってないでしょうか? 同じ開発ブランチで、既にリモ ...

Go言語

Go 1.24で追加されたjsonのomitzero

はじめに 2025年2月11日にGoの1.24がリリースされました。 そこで、今回は更新点に軽く触れつつ、新しく追加された encoding/json の omitzero タグについて紹介します。 ...

フォロー

blog-page_side_responsive

2017年6月
日 月 火 水 木 金 土
 123
45678910
11121314151617
18192021222324
252627282930  

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。