2009-06-11 12 views
0

現在、私は$_SESSIONにコンストラクタストア変数のクラスを持っています。

user_id$_SESSIONに保存しないように言われました。ユーザーはIDを好きなものに変更してから、任意のアカウントから自由にアクセスできます。 代わりに、私はsession_idを保存し、session_idからuser_idへのリンクを持つテーブルを作成しました。

私の質問は - このデータを操作するのがいかに難しいのですか?私は自分のプロジェクトに店舗システムを持っており、店のオーナーIDのようなものを$_SESSION変数に格納することができないことに気付きました。これは、少なくとも、データを取得するために、すべてのページにデータベースを照会する私につながります。

このタイプの情報を$_SESSIONに保存するのはどのように安全ですか?誰かがより良い解決策を持っていますか?

答えて

8

誰でもあなたが間違っていると言った。ユーザーは$_SESSION配列に格納されているデータを変更することはできません。ユーザは、PHPがそのユーザを認識できるようにsessionidで設定されたクッキーです。 edit彼らは本当に現実的に他のユーザーのsessionidにそれを変更することはできません。あなたが実行する唯一の危険は、ユーザーが何らかの形でユーザーのセッションID Cookieを保持している場合に、ログインしたユーザーとしてあなたのWebサイトにポーズをとることができますが、何らかのIPチェックの他に、

+0

なぜ私はクッキーを使用する必要がありますか?なぜ私はいつも$ _SESSIONを使うことができないのですか? – daniel

+1

クッキーはPHPがロードするセッションをどのように知っているのですか? – Greg

+0

$ _SESSIONを呼び出すとPHPが自動的に作成するクッキーについてのあなたの話は正しいですか?私がしなければならないものではありませんか? – daniel

2

誰かが間違っていたと言ってくれました。

セッションデータはサーバーに保存されます。サーバーへのアクセスとして誰かが変更できる場合、またはセッションデータを変更するスクリプトを呼び出すことができ、可能なスクリプトコールは、サイトのページで、これを制御できます(コードに欠陥がないことを確認するための措置を講じる限り)。

1

セッションデータは、Webサーバーによって一時ファイル(デフォルト)またはDBまたは他の場所(構成可能)に格納されています。したがって、エンドユーザはあなたの$ _SESSIONデータにあなたのサーバへのFTP/SSHアクセスを与えなければ何も変更できません。彼が変更できる唯一のものは要求されたセッションIDですが、この場合は何も安全ではありません。さて、あなたの "アドバイザー"がHTTPセッションの詳細とその動作方法を読んでくれることを願っています。

関連する問題