2011-01-04 8 views
0

Captchaなどを使用してユーザーが人間であることを検証するショッピングカートを開発しています。不正確な提出は残念ながらヘッダーのリダイレクトとセッションとセキュリティの維持

<?php header('Location:https://mysite.com/cart.php?PHPSESSID=mysessionid'); ?> 

により、ユーザは、元の確認ページにリダイレクトされる受信されたとき、私はURLにセッションIDを送信しない場合、私は、ページ内のすべての私のセッションデータを失うと(のsession_start呼び出し)新しいセッションを開始します。 PHPではこれがこれを行う唯一の方法だと思われます。この方法は、ユーザーがURLを使用して取得したセッションIDを使用してセッションをハイジャックする可能性があるため、少し不安です。これは、ユーザーが自分のサイトを離れて、次に参照したサイトの参照ページとして上記のURLを記載することによって実行できます。この変数を非表示にする良い方法はありますか?この情報をオープンスペースに出して、セッションをハイジャックするための媒体をすべて同じスペースにすることは、非常に大きなリスクのようです。読んでくれてありがとう!

+1

セッションIDにCookieを使用しないでください。 – Gumbo

+0

これは通常、ブラウザがCookieを受け入れない場合(多分この特定のサイトの場合)、またはセッションクッキーが無効になっている場合に発生します。とにかく_every_ヘッダの正しい表記は、 'Name:Value'ではなく' Name = Value'です。 – KingCrunch

+0

@KingCrunch:いいえ、[ヘッダーフィールドの構文](http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2)は実際に 'field-name 'です:" [field-value ] 'while * field-value *は空白で始まることがあります。 – Gumbo

答えて

2

通常、PHPセッションは、ブラウザが最初のリクエストとともに送信するHTTP Cookieから再初期化されます。

セッションCookieが有効なまま送信される限り、ユーザーはブラウザを任意のランダムページに自由に誘導し、セッションを再初期化することができます。

セッションが再初期化されない場合は、開始するのが良い理由は「なぜですか?」です。

関連する問題