質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

3回答

4161閲覧

【Rails】パラメーターの暗号化は何で行ってますか

kurosaki

総合スコア17

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

1クリップ

投稿2016/06/03 05:40

パラメーターの暗号化について質問です。
Railsのパラメータを暗号化したいと考えているのですが、下記記事はBase64で暗号化していました。Rails使いの皆様は、実際どう暗号化されているか、ぜひ教えていただきたいです。どうぞよろしくお願いします。

参照:
Qiita
to_key と to_param で URL や HTML 中のリソースの id を別の文字列にしてしまう
http://qiita.com/tyamagu2/items/36cba2c7ce9e941c37d3

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

参照されてるURLの記事ですが、あまりよい内容ではないです。

一般的な話として、数値idのかわりに何らかの文字列(たとえばユーザー名)を使いたいというリクエストはごく一般的なもので、多くのサイトで行われています。

これを実現するには、Railsの場合とりあえずfriendly_idというgemを使っておけというのが定番の解決策で、to_paramto_keyを自分でオーバーライドするのはお勧めしません。思わぬところでひっかかります。

で、これを使っての話ですが、ランダム文字列やそのレコードの何らかの値を暗号化した値を使いたいのであれば、キーとして参照するカラムを一つ追加し、レコードの作成更新時にそこに値を登録し、friendly_idでそのカラムを参照するようにするのが簡単です。

数値idでもユーザー名などでもない意味の無い文字列を使いたいというのはあまり一般的なリクエストとは言えませんので、定番と言えるような方法はありません。

投稿2016/06/03 07:55

suzukis

総合スコア1449

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kurosaki

2016/06/07 07:43

ありがとうございます。こちらの方法で、実装したいと思います。
guest

0

まずお聞きしますが、何のためにパラメータ部を暗号化したいのでしょうか。それによって、やるべき方法は変わってきます。

ふつうにアプリケーションを作る上では、(相応の理由がない限り)わざわざアドレスに手を入れるようなことはしません。

あと、Base64は人間から見ればよくわからない文字列になりますが、誰でも簡単に戻せるものですので、「暗号化」の部類には入らない処理です。

投稿2016/06/03 06:15

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kurosaki

2016/06/07 07:42

回答ありがとうございます。アクセスしたユーザーがIDをわからないようにしたいという目的でした。暗号化ではなく、ランダムな数字や文字で実装すれば済む話でした。ありがとうございました。
guest

0

https:// にするのでは不十分なのでしょうか?

参考情報:

...
7.5.1 本番環境でのSSL
...
本章で開発したユーザー登録フォームで送信すると、名前やメールアドレス、パスワードといったデータがネットワーク越しに流されていきます。実は、このようなネットワークに流れるデータは途中で捕捉できるため、扱いには注意が必要です。これはサンプルアプリケーションの本質的なセキュリティ上の欠陥です。そしてこれを修正するためにSecure Sockets Layer (SSL)11を使います。これはローカルのサーバからネットワークに流れる前に、大事な情報を暗号化する技術です。
...
SSLを有効化するのも簡単です。 production.rbという本番環境の設定ファイルの1行を修正するだけで済みます。 具体的には、 config変数で「本番環境ではSSLを強制する」という設定をするだけです
...

投稿2016/06/03 12:28

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kurosaki

2016/06/07 07:43

ありがとうございます。参考にさせていただきます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問