2011-08-02 6 views
3

可能性の重複:
PHP Can a client ever set $_SESSION variables?

私が知りたいのですがどのような、PHP $ _SESSION変数は、クライアント側で変更することができるかどうかです。たとえば、私が行う場合$_SESSION['username'] = $username;誰かが何とか私の$_SESSION['username']変数の値を変更できますか?

+2

PHPサーバ側スクリプト – Subdigger

答えて

4

PHPはサーバー側プログラミング言語であり、$ _SESSIONスーパーグローバルはサーバー上で直接アクセスできます。 '通常の' PHPセッションでは、SESSONスーパーグローバルに含まれるデータは、クッキー内でブラウザとサーバーの間を行き来します。技術的には、クッキーを変更することで、WebブラウザでJavascriptでセッションを変更することは可能です。

しかし、このようなことを行う試みはおそらくひどい考えであり、実行しようとしていることを達成するためにはるかに簡単な方法があります。

編集:私は尋ねたこの質問はSESSIONのスーパーグローバルの内容を変更することはできませんあなた Codeigniter/PHP sessions security question

+2

クッキーを変更すると、セッションスーパーグローバルの値を変更することはできませんが、別のセッションを使用できるようになります(正しいセッションIDを推測すれば)。 – Jim

+0

私の懸念事項は、**ユーザ**がこの変数を変更できるかどうかと、どのようにそれを保護できるかです。 –

+0

これは簡単ではなく、実行可能です。私は、それが可能であるという質問に答えようとしています。いいアイデアですか? No. –

1

正確ではありませんが、AJAXでシミュレーションできます。値を変更するPHPファイルを作成し、それをAJAXから呼び出すだけで、その値を変更して変更することができます。

希望すると、これが役に立ちます。

+0

私はこれを長い間使用してきたので、すでによく知っていますが、私の懸念はユーザーがこの変数を変更できるかどうかです。 –

+0

Ok、私はこれが私のやり方だと思っています... – elvenbyte

5

に有用であり得ます。これはサーバー上に存在し、クライアントはこれにアクセスする方法がありません。

ただし、セッションIDがクライアントに渡されるため、クライアントがサーバーに接続するときにサーバーは使用するセッションを知るようになります。 この値は変更できます(これを防ぐためのCalumsの回答を参照してください。http://php.net/manual/en/session.security.phpを参照してください)。これは、ユーザーが誰かのセッションを使用できるようにします(ただし、セッションの値は変更しません)。

+0

誰かがPHPSESSIDを使用していると、誰かがセッションをハイジャックすることができますが、SESSION配列の内容を変更することはできません。 –

+0

@George Correct、ハイジャックを防ぐためのCalumsの回答を参照してください。 – Jim

+0

@ジムこの有名なカウムの答えはどこにありますか? – carla

関連する問題