アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります。

現在、ユーザーが記事を作成、編集、削除できるブログシステムを作成しています。
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"]=ログインユーザーの記事情報を格納。

お分かりの方、教えていただけたら幸いです。
よろしくお願い致します。

A 回答 (2件)

セッションハイジャック


http://www.atmarkit.co.jp/ait/articles/0307/09/n …

突っ込むデータに対してソルトなどをかけて暗号化しておけば簡単に推測することは
できないでしょうが、復号するのも面倒だし、盗まれれば、盗まれたことには
変わりはないし、更新が行われたらセッション情報まで更新してあげなきゃいけないし、
ブラウザ操作による制御も、クリアするタイミングも考えなきゃいけないし、
いちいち考えなきゃいけないことが増えると思いますよ。
    • good
    • 0
この回答へのお礼

ご回答、参考リンクありがとうございます。
確かに更新の度にセッション情報も更新をしたりしていたら逆に大変ですね。
この度はご回答いただきありがとうございました。

お礼日時:2014/07/03 23:14

もちろん基本的なセキュリティ対策は当然として、問題ありません。


毎回取得すると分かり切っているようなユーザの基本的な情報、例えばidの他、name,メールアドレス(よく使用するなら),ロール(権限の種類)や所属,ログイン成功時のIP、その他POST送信時のトークン、Referrerとして現在のURLなどを入れたりします。

質問者さまの場合、idやname、dir は適当だと思いますが、記事の方は持ち回るにはデータが大きい割に使用するかどうかも分からないのでセッションに入れるには不適切かと。
こちらはこれまで通り、必要な場面でDBから取得すればよいのではないでしょうか。

また「ユーザ情報をセッションに格納するのはログイン成功時のみ」に限るので、用済みになるパスワードは暗号化されているかどうかにかかわらず不要なので保持することはありません。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
まさしく、私がお聞きしたかったこと、ズバリ!のご回答で非常に助かりました。

毎回取得するような情報はセッションに、
記事は毎回DBから取得でいきたいと思います。

この度はご回答いただきありがとうございました。

お礼日時:2014/07/03 23:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!