- ベストアンサー
指定サイトからのアクセスのみ許可したいです。
指定サイトからのアクセスのみ許可したいです。 仕様としてあるサイトからのみアクセスを許可させたく、 リファラで対応しようと思っていたのですが、携帯だとリファラが取れない 機種などがあるようで大変困っています。 やりたい事としては本サイトのURLが分かっていても、 指定されたサイトから来てない場合は、 観覧拒否を行いたいので特にリファラを使わなくてもできる方法があれば 教えていただきたいです。 環境 PHP 5.1 CentOS 5.0 よろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#2です。 リンク元ページからのリンクはボタンでもいいんですかね? ボタンでよければ、POSTにしてアクセス方法がPOSTかGETかの判断を追加することで、#2の方法でブックマーク対策はできます。 ブックマークからのアクセスはGETしかできない。 と、書いているうちに#2の方法(というよりも携帯ではすべて)の欠点がもう一つ。 リンク元ページに書かれたリンクと同じものを勝手にどこかのページに作成された場合、正規のページから来たものか、不正なページから来たものか判断できない。 これはPOSTにしても対処できない。 Refererを監視して、Refererを吐く機種からアクセスされた場合にのみ、不正なページを発見できる、と対処する事は可能ですが。 発見出来たら、そのサーバ運営者に削除依頼してもイタチゴッコでしょうから、訴訟する等の抑止力を期待するなどになりますが。
その他の回答 (3)
- buraru
- ベストアンサー率54% (12/22)
リファラ送信されてない場合にそのような事は難しいと思います。 但し、条件付きでかなり面倒な上、条件もなかなか厳しいのですが、以下のような方法を取る事が出来ると思います。 -条件- 条件1. 「あるサイト」が自身の管理下にある事 条件2. チェックに確実性・正確性を求めず、ID漏れなどで直接「本サイト」にアクセス出来る人間が出るかもしれない事を割り切れる事 -手順- 手順1. 「あるサイト」にアクセスがある度にユニークなIDを発行し、ユニークID及び発行日時をDBに保存 手順2. 「あるサイト」から「本サイト」へのリンクの際に手順1で発行したIDをGETパラメータ(別にPOSTでも可)として付加 手順3. 「本サイト」にアクセスがある毎に、「発行後X秒経過したIDはDBから削除」といった処理を実行 (少々面倒さが増し、ID漏れの危険性が増すが、最終アクセスからX秒経過の方がユーザとしては使い勝手が良いかもしれない) 手順4. 「本サイト」にアクセスがある毎に、GETパラメータの値をチェックし、DBにIDがあるかチェック、DBの値と一致する場合はページ表示、一致しない場合はエラー表示
お礼
説明不足ですみません。 「あるサイト」が管理下にないのです・・・。 こちらで指定したリンクを貼ってもらうことはできるのですが、 DBへのアクセスなどはできないのです。。。 とても詳しく書いていただき、参考になりました。 ありがとうございました。
- BellBell
- ベストアンサー率54% (327/598)
クッションページ(表示はされない)を設ける方法が一番楽ですかね。 たとえば、in.phpを作成して header("Location: http://~/index.php"); のように、Locationヘッダーを返して画面遷移させる方法。 実際には、Locationヘッダを返す前に、携帯の契約者ID情報を元にDBにin.php通過のデータを挿入する。 サイト内でin.php通過のデータが入っているかどうかを確認して、通過フラグが立っていなければ『直アクセスできません』とでもメッセージを表示する。 通過フラグは指定時間(10分など)を超えたデータは削除する事で、ブックマークされても次回アクセス時には(指定時間が過ぎていた場合)『直アクセスできません』となる。 欠点は、in.phpをブックマークされた場合に対処できない。 (※携帯の場合、表示されているページ以外はブックマークできない?それでもブックマークURLを手入力で編集されたらダメ) 指定時間(10分)を過ぎたら、サイト内で別ページに移動する際にも『直アクセスできません』となってしまう。 (※サイト内移動時に、時間を更新することで対処可能、ただし無操作時間が指定時間を超えた場合にアウト) PCサイトは同じ手法が使えない。 元ページで、リンク先をブックマークが簡単にできる。 ※PCサイトでもリファラを使用する、というわけにはいかない。ウィルスバスターなどのセキュリティ対策ソフトで、リファラを削除する(リファラを送信しない)という機能が存在するため。 他にも欠点はあるかも知れませんが、簡単に実装できるのはこんな感じしか思いつかない。
お礼
特定のサイトかのアクセスのみ許可したいので、 ブックマーク(URLが分かってしまう)されてしまうとダメですね・・・。 ただ考え方としてはとても参考になりました! ありがとうございます。
- LOHA
- ベストアンサー率52% (203/388)
会員制ページにしない限り、完全に防ぐことは不可能です。 ということで表面上の防止策ですが、基本的にリファラはアテにならないので使えないでしょうね。 どうやっても抜け道は存在しますが、そのサイトにアクセスした時、POSTで何らかの判別用ワードを送信するようにするとかどうでしょう。 以前見たサイトでは、Basic認証をかけて、リンクしているページでユーザー名、パスワードを書いておいて入力させるというものを見たことがあります。
お礼
やっぱりそうですよね。。。 POSTで指定パラメータを渡して確認するしかないですか・・。 ありがとうございます。
お礼
ありがとうございます。 上記内容で対応してみました。