2016-08-21 4 views
0

ログインに成功すると、前のページにリダイレクトするログインスクリプトを作成しています。の$ _SERVER [ 'HTTP_REFERER']を使用してrefererページURLの受け渡しと取得

  1. - 全体のリファラURLに送信します:私はリファラURLを渡すためにいくつかの方法を見てきました。操作が可能です。信じられないように。

  2. $ _GETとし、refererをurlパラメータとして渡します。まったく安全ではありません。

  3. フォーム内の非表示フィールドを使用する。 POSTでも安全ではありません。

したがって、方法2では柔軟性が最も高いので、私はそれを選択しています。問題は次のとおりです。 ドメインを持たないURL( 'http://www.domain.com/'が削除されている)をリダイレクトすると、手動でドメインの前に追加すると、その結果のURLリダイレクトが自分のドメイン内に残りますか?そうでない場合、私はそれが迷子にならないようにするために何をすることができますか?

(結果のURLとはページが存在しない場合、それはホームページにリダイレクトされます、と仮定)

例:http://www.domain.com/login.php?ref=category/products/product-1.php ログイン成功には、ページが'http://www.domain.com/'.$_GET['ref']

にリダイレクトされます

私はリファラURLパラメータを検証するために行われる必要があります知っている:

  1. '../'は前のフォルダに移動するのに役立ちます。削除する必要がある場合は削除する必要があります。

  2. referer urlパラメータで渡されるタグはすべて削除する必要があります。

  3. すべて '://'を削除する必要があります。

+1

URLは適しかもしれない保存しない、私は本当に理解してますが(配列など)セッション変数 - で、あなたがルックアップすることができセッションvar、前のページとそのページにリダイレクト – RamRaider

+0

$ _SESSIONに非常に多くのURLを格納することで料金がかかりますか?スタックフォームでそれを使用するのはちょっと問題になるかもしれません。なぜなら、ブラウザで前のページに移動したかどうかを確認する必要があるからです。 – BlackPanther

答えて

1

いくつかのヒント:

  1. あなたは全くリダイレ​​クトドメインを提供する必要はありません。あなたが別のドメインにリダイレクトする必要がない場合は、 のドメインを気にしないでください。もちろん $ refでドメインが偽造されていないかどうかを確認する必要があります
  2. リダイレクトする前に実際のURLではなく$ refでページエイリアスを使用してURLを作成できます。
  3. だけは本当に安全な方法は、本当にあなたのページに存在しているURLのagainsのURLをチェックしている
関連する問題