お世話になります。
現在、ユーザーが記事を作成、編集、削除できるブログシステムを作成しています。
MYSQLのデータベーステーブルには以下の3つを用意しています。
・usersテーブル:ユーザー名(name)、パスワード等(pw)、記事保存先ディレクトリ(dir)等のユーザ情報
・articleテーブル:ブログ記事タイトルや本文等の情報
・imagesテーブル:ブログ記事に使用している画像情報
ここで質問があります。
現在ユーザーがログイン成功時にセッションにはユーザーIDのみを
$_SESSION["id"]として保存しています。
そして、記事投稿処理時や、記事編集処理時など、各場面で必要になった情報はそのときselectを使ってテーブルから毎回取り出しています。
しかし、こんなことをしなくても、ユーザーがログイン成功時に、セッションにユーザーID以外の情報も
保存しておけば、以後データベースから取り出す必要がなくなり便利かと思うのですが、セキュリティ面などからこのようなやり方はNGなのでしょうか?
1,まったく問題ないのか?
2,パスワード等の重要データはNGなのか?
3,ユーザーidのみにしておくべきなのか?
問題がある場合、その理由も教えていただけるとありがたいです。
例)ユーザーログイン時に、
$_SESSION["id"]=ユーザーID格納。
$_SESSION["name"]=ユーザー名を格納。
$_SESSION["dir"]=記事保存先ディレクトリを格納。
$_SESSION["article"]=ログインユーザーの記事情報を格納。
お分かりの方、教えていただけたら幸いです。
よろしくお願い致します。
No.1
- 回答日時:
セッションハイジャック
http://www.atmarkit.co.jp/ait/articles/0307/09/n …
突っ込むデータに対してソルトなどをかけて暗号化しておけば簡単に推測することは
できないでしょうが、復号するのも面倒だし、盗まれれば、盗まれたことには
変わりはないし、更新が行われたらセッション情報まで更新してあげなきゃいけないし、
ブラウザ操作による制御も、クリアするタイミングも考えなきゃいけないし、
いちいち考えなきゃいけないことが増えると思いますよ。
ご回答、参考リンクありがとうございます。
確かに更新の度にセッション情報も更新をしたりしていたら逆に大変ですね。
この度はご回答いただきありがとうございました。
No.2ベストアンサー
- 回答日時:
もちろん基本的なセキュリティ対策は当然として、問題ありません。
毎回取得すると分かり切っているようなユーザの基本的な情報、例えばidの他、name,メールアドレス(よく使用するなら),ロール(権限の種類)や所属,ログイン成功時のIP、その他POST送信時のトークン、Referrerとして現在のURLなどを入れたりします。
質問者さまの場合、idやname、dir は適当だと思いますが、記事の方は持ち回るにはデータが大きい割に使用するかどうかも分からないのでセッションに入れるには不適切かと。
こちらはこれまで通り、必要な場面でDBから取得すればよいのではないでしょうか。
また「ユーザ情報をセッションに格納するのはログイン成功時のみ」に限るので、用済みになるパスワードは暗号化されているかどうかにかかわらず不要なので保持することはありません。
ご回答ありがとうございます。
まさしく、私がお聞きしたかったこと、ズバリ!のご回答で非常に助かりました。
毎回取得するような情報はセッションに、
記事は毎回DBから取得でいきたいと思います。
この度はご回答いただきありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- PHP php 入力画面から確認表示画面へ情報の受け渡しについて。 1 2023/06/07 18:00
- WordPress(ワードプレス) ワードプレスの管理画面でユーザー名が違うと出るのですがどこで設定したユーザー名を打てばいいのでしょう 1 2022/03/31 19:36
- Safari(サファリ) スマホのサイトで自動ログインできない。 1 2022/07/10 16:15
- その他(セキュリティ) 匿名チャットアプリのトラッキングについて。顔写真や個人情報の漏洩はあるのか。 2 2023/03/28 00:00
- ハッキング・フィッシング詐欺 スマホアプリのトラッキング 個人情報について 5 2023/03/31 08:16
- その他(セキュリティ) 匿名チャットアプリ トラッキング 個人情報について 1 2023/03/29 20:35
- その他(セキュリティ) 匿名チャットアプリでの知られたくない会話 個人情報について 1 2023/03/29 18:08
- PHP PHPで入力フォームでデータを確認表示画面まで送る流れを日本語で理解したいのです。 1 2023/05/29 19:12
- PHP sessioncookieをではなくcookieを使わなければならない理由について… 4 2022/11/07 13:01
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
URLのパラメータをGETのままで...
-
SESSION情報は、ブラウザを起動...
-
共用サーバでのセッション管理...
-
セッション中に有効期限切れの...
-
リアルタイムカウンター
-
ブラウザを閉じた後もセッショ...
-
Sessionの上限について
-
セッション ID とセッション名...
-
PHPのセッション有効期限について
-
ログイン画面をはさんだ後、自...
-
POSTで情報を他のサーバーに渡...
-
!issetの冒頭の!ビックリマー...
-
Dosブロンプトでtabを出力したい
-
wordの差し込み印刷で文字...
-
DTOとEntityの差は何ですか。
-
shシェルスクリプト 空白行の...
-
findstrのerrorlevel
-
DMMの動画を全件取得したのです...
-
Yahoo! JAPAN IDを新規取得でき...
-
「取得先」という表現について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
URLのパラメータをGETのままで...
-
PHPのセッション有効期限について
-
PHPのセッションについて
-
ブラウザを閉じた後もセッショ...
-
Sessionの上限について
-
$_SESSIONと、POSTやGETの違い
-
ログインしたら他からログイン...
-
複数のサーバで運営する場合の...
-
301リダイレクトはセッション引...
-
「戻る」ボタンで値の保持
-
セッションのスコープ(有効範...
-
セッション ID とセッション名...
-
ログイン画面をはさんだ後、自...
-
session_start()で生成されるセ...
-
管理者としてログイン
-
セッション変数にパスワードを...
-
セッションを維持したまま、サ...
-
PHP cookieの値が更新されない...
-
セッションが正しく更新されな...
-
POSTで情報を他のサーバーに渡...
おすすめ情報