‘hashid-rails’を用いてIDを難読化・暗号化させる方法についてまとめたいと思います。IDに数値を用いている場合、数値からユーザー数を特定されたり、URLが不正ユーザーにと送られてしまったりと様々な危険があるため、IDをそのまま使用している場合はhashid-railsを用いて特定されない値に変換しましょう。暗号化のカスタマイズまとめ参考hashid-railsとはhashid-railsとは、IDを自動で暗号化(ハッシュ化)することで、機密情報が特定されることを防いでくれるgemになります。time.このgemを使用すると、RailsアプリでHashidsを簡単に使用できます。1、2、3のような連番を使用するモデルの代わりに、「yLA6m0oM」、「5bAyD0LO」、「wz3MZ49l」のような一意の短いハッシュがあります。データベースは引き続き内部で整数を使用するため、このgemはいつでも追加または削除できます。hashid-rails例えば「https://test-site/users/1/account」のように数値がURLにそのまま入ってしまうと、ユーザー数が特定されてしまったりURLが不正ユーザーに拡散されてしまったりと、危険な状況になる可能性があります。hashid-railsを用いることで、「https://test-site/users/JF751f/account」のようにIDを自動で暗号化し、アプリケーションの安全性を高めてくれます。hashid-railsの使用方法hashid-railsの使用方法をまとめると以下のようになります。Hashid::Rails」を記載します。Userのパラメーターを暗号化したい場合、以下のように記述します。Hashid::Railsendたったこれだけの作業でhashid-railsを使用できる環境が整いました。最後にhashid-railsを用いてID部分を暗号化してみましょう。link_toメソッドを用いてURLを生成している場合は、以下のように「@user.hashid」とすることでURLに暗号化された文字列が表示されるようになります。生成されるURL例(ローカル環境)http://localhost:3000/accounts/users/KmoHXZfindメソッドを用いてパラメータを取得する場合も、以下のようにhashidを指定します。User.find(params[:id])」といったこれまでの記述でも可能です。先ほどはfindメソッドを用いて暗号化されたパラメータを受け取る方法について記載しましたが、hashid-railsではfind_byメソッドのような使い方も可能です。nil暗号化のカスタマイズデフォルトではID部分は「”abcdefghijklmnopqrstuvwxyz”」「”ABCDEFGHIJKLMNOPQRSTUVWXYZ”」「”1234567890′′」を組み合わせた6文字で構成されますが、この部分はカスタマイズが可能です。initializers以下にhashids.rbを作成し、その中に設定を書き込んでいきます。‘hashid-rails’を用いてIDを難読化・暗号化させる方法についてまとめました。IDを難読化する方法は他にも色々あるようですが、hashid-railsを用いる方法が一番早く簡単だと思います。導入がまだの方はぜひ検討してみてください。yoshi19941117TechTechMedia【RSpec】described_classメソッドを用いて対象クラスを...【Rails】letter_opener_webを用いて開発環境で送信し...Railsエンジニアちばよしはる銀座にあるヘルステック企業のRailsエンジニア。初心者から中級者向けに記事を更新しています。お酒とカレーと競馬が好き。TechTechMedia。