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

執筆者:

免責事項

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


comment

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

CAPTCHA


関連記事

laravel logo

Inertia使ってみた①

はじめに 以前Laravel Breezeをインストールした際にパッケージに含まれていたInertiaを使ってみたので簡単に紹介したいと思います。 今回はLaravel + Reactの組み合わせで使 ...

FastAPIのPath Operationをasync defにするときはブロッキングに気をつけよう!

はじめに 今回は、FastAPIのAPIのエンドポイントを定義する方法である Path Operationに渡す関数を async defにした時の挙動について調べました。この手の記事はすでにたくさん ...

laravel logo

Laravelの認可機能Gateを使ってみた

はじめに Laravelには認可機能を簡単に実装出来るGateという機能が用意されているので使ってみました。 やる事 よくあるユースケースとして、ユーザー毎に画面の閲覧権限とPOST権限を作ってみたい ...

laravel logo

Laravel Sail 環境に Laravel Breeze を導入してみた

はじめに Laravel8から、Laravel UIの後継としてLaravel Breezeが登場しました。 Laravel Sail 環境に導入して最短でローカル開発環境を構築してみたいと思います。 ...

rails

configに追記したのに、rails runnerが起動しない?

はじめに tonnyです。 最近はVue.js関連の記事を書いておりましたが、今回はRailsに関して困ったことを記載したいと思います。 割と短めです。 環境 Ruby: 2.4.1 Ruby on ...

フォロー

blog-page_side_responsive

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

アプリ情報

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