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

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

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

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

セキュリティー

このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

2回答

8756閲覧

Laravelでinput type="password"の値をフラッシュデータから取得する

kriht

総合スコア26

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

セキュリティー

このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

1クリップ

投稿2019/02/15 16:30

Laravelで新規登録機能を実装しました。

送信してバリデーションエラーがあるとパスワードを一から再入力する必要があります。

名前やメールアドレスなどの項目はoldメソッドを利用することで、フォームを再表示した時に直前の送信内容が入力済になります。

パスワードの場合は
request()->old('password') が null になるので使えません。
できたとしてもセキュリティ的に問題ありますか?

HTML

1<input type="password" name="password" value="{{ old('password') }}"

例えば、ユニークなnameの項目があった場合、
バリデーションに引っかかるごとに入力したパスワードが消えていては不便です。
ベストなのは非同期でnameを送信して使えるかチェックするという方法かもしれませんが。

セキュリティ的に安全な方法で、直前に入力さたパスワードを入力済にする方法はありませんか?

教えてください。よろしくお願いします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

パスワードを持ち回りすると、一般的には、パスワードの漏洩リスクが高まるという理由から避けるべきとされています。なので、脆弱性診断を頼むと脆弱性と判断される可能性があります。

しかし、この辺、実は微妙なところと思っていて、伏せ字になっているパスワードの値を見るには、パソコン上で操作をしなければならないので、その時点でいろいろまずいわけです。なので、パスワードを知られることによるリスクが大きければ避けたほうがよいし、それほどリスクがないのであれば許容してもよいかもしれません。

私からの提案は、入力→確認→登録の遷移において、パスワードの入力欄を「確認画面」におくことです。そうすれば、バリデーションのエラーの時点ではパスワードを持ち回りする必要はなくなります。

投稿2019/02/17 11:32

ockeghem

総合スコア11701

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

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

kriht

2019/02/17 12:40

ご回答ありがとうございます。 登録処理までに1段階挟むということですね。 「入力→登録」を想定していましたが、「入力(ユーザー名)→確認(パスワード)→登録」とすることでパスワードの持ち回りをしなくても、利便性を保てますね。 バリデーションエラーで再入力の状況が発生しうるのは、 「確認」の段階で、別の人が同じユーザー名で登録した場合ですね。 これはそう起こりえない状況なので、許容範囲ですね。
kriht

2019/02/17 12:43

ちなみにですが、「入力→確認」でユーザー名はhiddenパラメータで渡すべきですよね?利用者自身で書き換えることに意味ないですし。 入力→(input type="hidden")→確認→(input type="text")→登録 この流れで正しいでしょうか? 徳丸本p182でのフォームの図では逆になっていたので一応確認したいと思いまして。
ockeghem

2019/02/17 12:44

『バリデーションエラーで再入力の状況が発生しうるのは、「確認」の段階で、別の人が同じユーザー名で登録した場合ですね。』 < いえ、これはこれで問題だと思いますが、そうなりますか? ならないと思いますし、もしなるなら実装方法を見直すべきだと思います
ockeghem

2019/02/17 12:46

徳丸本p182の図が正しいと思いますが。いきなりhiddenにすると、その値はどこからもってくるのでしょうか?
kriht

2019/02/17 13:01

ご返信ありがとうございます。 説明不足でごめんなさい!バリデーションエラーで再入力の状況が発生しうるのは「確認画面からPOSTした時」という意味です。 「確認画面」に留まっている間に、別の人が同じユーザー名で登録処理を完了させた場合です。 同時に同じユーザー名を入力しても、確認画面までは通過すると思います。
kriht

2019/02/17 13:09

私の認識が間違っていました。すみませんでした。 入力画面から <input type="text"> でPOSTする。受け取った値をPHPで確認画面に渡す。 確認画面から <input type="hidden" value="{{$name}}"> のようにしてPOSTする。 という流れが正しいですね。 もし間違いがあれば教えていただければ幸いです。
ockeghem

2019/02/17 13:12

はい、そのとおりです
kriht

2019/02/17 13:15

ありがとうございました!
guest

0

php

1namespace App; 2 3class User 4{ 5 6 protected $hidden = [ 7 'password', 'remember_token', 8 ]; 9 10}

Userモデルの $hidden に含まれている 'password' を削除すれば可能だと思う。

ただし、本来、$hidden は別の目的のためにあるので、メリット、デメリットを考慮の上で。

投稿2019/02/16 05:39

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

kriht

2019/02/17 10:37

ありがとうございます。 $hiddenから外せば実現可能なのですね。 セキュリティ的に問題はないのでしょうか?
退会済みユーザー

退会済みユーザー

2019/02/17 10:53

レスポンスされる HTMLデータにプレインなパスワードが記載される程度ですね。
kriht

2019/02/17 13:15

ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問