Webアプリケーションでよくある
入力画面
↓
確認画面
↓(登録ボタン)
完了画面
のような時に、確認画面から登録ボタンを押して画面遷移と共に裏でDBに登録処理をする場合、確認画面にhiddenで項目を用意しようと思いました。
ただこのとき項目にパスワードなど扱いに気をつけないといけない物がある場合、hiddenではソースから見えてしまうのでまずいかな?と悩んでおります。
ただ見るのは入力したユーザー本人なのでどうなんだろうと思い質問させて頂きました。
hiddenがまずい場合はセッションに格納したりかなとも思ってはおります。
皆様はこのような場合はどう扱われていますか?
###追記
皆様ご回答ありがとうございます。
前提として想定している情報が足りず申し訳ありません。
以下、もう少し詳細な想定しているケースです。
SSLを利用する前提
通信の傍受面に関してはSSLを利用する前提で、今回視野には入れていませんでした。
入力画面
input type="password"を利用し、入力中の画面表示は*で伏せられる
確認画面
こちらも画面上に直接表示はせずダミーで*で伏せる
(もしくはパスワードの項目自体は確認画面の画面上には表示させない)
入力値チェック
◯文字以上◯文字未満、英数字記号のみ、などのバリデーション処理については、入力画面→確認画面、確認画面→完了画面とどちらでも実施します。
hiddenで本機能を実装した場合に書き換えられても問題ない認識です。
利用シーン
会員制のサイトで初回の会員登録としてのシーンです。
この処理でアカウント作成をした後のログイン処理は、初回のみIDとパスワードを入力させ、次回以降はトークンを利用したログインシステムにする想定です。
DBに格納する値
直接格納するのにふさわしくない項目、カード番号やパスワードに関しては暗号化した状態でDBに保管。復号化は出来ない値として保管。
上記のような想定でした。
そして方法が大きく分けて二つあると思っており、
0. hiddenでバトンリレーしてsubmitしサーバーへ渡す
0. セッションに格納してサーバーへ渡す
簡単な項目(セキュリティを気にしないでもいいような項目、例えば商品名とか)であればhiddenで問題ないと思いますが、セキュリティ意識を持たないといけない項目の場合にはどうなのかな?と思った次第でした。
hiddenであればお手軽に実装出来る、セッションでは適切に消去しないと逆に残ってしまいhiddenに比べると実装設計に手間がかかる。
こんなイメージです。
もともと横着(楽を)してhiddenでいいかなと思っており、hiddenに生のパスワードでもいいか?と思ったのですが、何か私の知らないセキュリティリスクがあるかなと思い質問させて頂きました。
皆さんのご回答を受けて、今思っているのは
入力受付後はハッシュ化してhiddenで持ち回る
がシンプルで尚且つ実装が楽かなぁと横着な考えを持っています。
※生の値を持ち回るのはhiddenでもセッションでもよろしくないと思うので、ハッシュ化。
そしてhiddenでもセッションでもセキュリティ面で著しくどちらかが劣るというお話が出ていないことから上記に至っています。
回答7件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/06/27 13:31
2017/06/27 13:35