個人事業主の方必見!確定申告のお悩み解決

指定サイトからのアクセスのみ許可したいです。

仕様としてあるサイトからのみアクセスを許可させたく、
リファラで対応しようと思っていたのですが、携帯だとリファラが取れない
機種などがあるようで大変困っています。

やりたい事としては本サイトのURLが分かっていても、
指定されたサイトから来てない場合は、
観覧拒否を行いたいので特にリファラを使わなくてもできる方法があれば
教えていただきたいです。

環境
PHP 5.1
CentOS 5.0

よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

#2です。


リンク元ページからのリンクはボタンでもいいんですかね?
ボタンでよければ、POSTにしてアクセス方法がPOSTかGETかの判断を追加することで、#2の方法でブックマーク対策はできます。
ブックマークからのアクセスはGETしかできない。

と、書いているうちに#2の方法(というよりも携帯ではすべて)の欠点がもう一つ。
リンク元ページに書かれたリンクと同じものを勝手にどこかのページに作成された場合、正規のページから来たものか、不正なページから来たものか判断できない。
これはPOSTにしても対処できない。

Refererを監視して、Refererを吐く機種からアクセスされた場合にのみ、不正なページを発見できる、と対処する事は可能ですが。
発見出来たら、そのサーバ運営者に削除依頼してもイタチゴッコでしょうから、訴訟する等の抑止力を期待するなどになりますが。
    • good
    • 0
この回答へのお礼

ありがとうございます。
上記内容で対応してみました。

お礼日時:2010/04/08 09:17

リファラ送信されてない場合にそのような事は難しいと思います。



但し、条件付きでかなり面倒な上、条件もなかなか厳しいのですが、以下のような方法を取る事が出来ると思います。

-条件-
条件1.
「あるサイト」が自身の管理下にある事

条件2.
チェックに確実性・正確性を求めず、ID漏れなどで直接「本サイト」にアクセス出来る人間が出るかもしれない事を割り切れる事

-手順-
手順1.
「あるサイト」にアクセスがある度にユニークなIDを発行し、ユニークID及び発行日時をDBに保存

手順2.
「あるサイト」から「本サイト」へのリンクの際に手順1で発行したIDをGETパラメータ(別にPOSTでも可)として付加

手順3.
「本サイト」にアクセスがある毎に、「発行後X秒経過したIDはDBから削除」といった処理を実行
(少々面倒さが増し、ID漏れの危険性が増すが、最終アクセスからX秒経過の方がユーザとしては使い勝手が良いかもしれない)

手順4.
「本サイト」にアクセスがある毎に、GETパラメータの値をチェックし、DBにIDがあるかチェック、DBの値と一致する場合はページ表示、一致しない場合はエラー表示
    • good
    • 0
この回答へのお礼

説明不足ですみません。
「あるサイト」が管理下にないのです・・・。
こちらで指定したリンクを貼ってもらうことはできるのですが、
DBへのアクセスなどはできないのです。。。

とても詳しく書いていただき、参考になりました。
ありがとうございました。

お礼日時:2010/04/03 14:35

クッションページ(表示はされない)を設ける方法が一番楽ですかね。


たとえば、in.phpを作成して
header("Location: http://~/index.php");
のように、Locationヘッダーを返して画面遷移させる方法。
実際には、Locationヘッダを返す前に、携帯の契約者ID情報を元にDBにin.php通過のデータを挿入する。
サイト内でin.php通過のデータが入っているかどうかを確認して、通過フラグが立っていなければ『直アクセスできません』とでもメッセージを表示する。

通過フラグは指定時間(10分など)を超えたデータは削除する事で、ブックマークされても次回アクセス時には(指定時間が過ぎていた場合)『直アクセスできません』となる。

欠点は、in.phpをブックマークされた場合に対処できない。
(※携帯の場合、表示されているページ以外はブックマークできない?それでもブックマークURLを手入力で編集されたらダメ)

指定時間(10分)を過ぎたら、サイト内で別ページに移動する際にも『直アクセスできません』となってしまう。
(※サイト内移動時に、時間を更新することで対処可能、ただし無操作時間が指定時間を超えた場合にアウト)

PCサイトは同じ手法が使えない。
元ページで、リンク先をブックマークが簡単にできる。
※PCサイトでもリファラを使用する、というわけにはいかない。ウィルスバスターなどのセキュリティ対策ソフトで、リファラを削除する(リファラを送信しない)という機能が存在するため。

他にも欠点はあるかも知れませんが、簡単に実装できるのはこんな感じしか思いつかない。
    • good
    • 0
この回答へのお礼

特定のサイトかのアクセスのみ許可したいので、
ブックマーク(URLが分かってしまう)されてしまうとダメですね・・・。

ただ考え方としてはとても参考になりました!
ありがとうございます。

お礼日時:2010/04/03 14:32

会員制ページにしない限り、完全に防ぐことは不可能です。



ということで表面上の防止策ですが、基本的にリファラはアテにならないので使えないでしょうね。

どうやっても抜け道は存在しますが、そのサイトにアクセスした時、POSTで何らかの判別用ワードを送信するようにするとかどうでしょう。

以前見たサイトでは、Basic認証をかけて、リンクしているページでユーザー名、パスワードを書いておいて入力させるというものを見たことがあります。
    • good
    • 0
この回答へのお礼

やっぱりそうですよね。。。
POSTで指定パラメータを渡して確認するしかないですか・・。

ありがとうございます。

お礼日時:2010/04/03 14:39

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q特定ページからのリンクのみアクセス可能にしたい

Webサイトのある特定のページのアクセス制限について、次の2点を両立させたいのです。

1.PCでのアクセスの場合は、別の特定のページからのリンクのみアクセスOK
2.携帯でのアクセスの場合は、無条件でアクセスOK

リファラーを利用して、.htaccessやcgiでアクセス制限すると、1は実現できても、携帯はリファラーを吐き出さないので、はじかれてしまい、2が実現できず、ジレンマに陥っています。

良い方法はないでしょうか?

Aベストアンサー

例えば、以下のような感じですね。
PCの部分をご自分の環境に合わせて修正して、ご希望の動作をするか確認してみてください。

○.htaccess例
-------8<-------8<-------8<-------8<-------8<-------8<-------
order deny,allow
deny from all

# PC
# 特定のrefererのみアクセス可
SetEnvIf referer "www.exsample.net/test/pc-ok.html" allow-access
allow from env=allow-access

#
# 携帯電話からのアクセスは許可
#

# DoCoMo (2003/12)
# http://www.nttdocomo.co.jp/p_s/imode/make/ip/
allow from 210.153.84.0/24
allow from 210.136.161.0/24
# DoCoMo(FOMA)
allow from 203.138.45.0/24


# vodafone (2003/12/12)
# http://www.dp.j-phone.com/dp/tech_svc/web/ip.php
allow from 210.134.83.32/27
allow from 210.146.7.192/26
allow from 210.146.60.128/25
allow from 210.151.9.160/27
allow from 210.169.193.192/26
allow from 210.228.189.0/24
allow from 211.8.49.160/27
allow from 211.8.159.128/25
allow from 211.127.183.0/24


# au/TU-KA (2004/12/01)
# http://www.au.kddi.com/ezfactory/tec/spec/ezsava_ip.html
allow from 210.169.40.0/24
allow from 210.196.3.192/26
allow from 210.196.5.192/26
allow from 210.230.128.0/24
allow from 210.230.141.192/26
allow from 210.234.105.32/29
allow from 210.234.108.64/26
allow from 210.251.1.192/26
allow from 210.251.2.0/27
allow from 211.5.1.0/24
allow from 211.5.2.128/25
allow from 211.5.7.0/24
allow from 218.222.1.0/24
allow from 61.117.0.0/24
allow from 61.117.1.0/24
allow from 61.117.2.0/26
allow from 61.202.3.0/24
allow from 219.108.158.0/26
allow from 219.125.148.0/24
allow from 222.5.63.0/24
allow from 222.7.56.0/24
-------8<-------8<-------8<-------8<-------8<-------8<-------

例えば、以下のような感じですね。
PCの部分をご自分の環境に合わせて修正して、ご希望の動作をするか確認してみてください。

○.htaccess例
-------8<-------8<-------8<-------8<-------8<-------8<-------
order deny,allow
deny from all

# PC
# 特定のrefererのみアクセス可
SetEnvIf referer "www.exsample.net/test/pc-ok.html" allow-access
allow from env=allow-access

#
# 携帯電話からのアクセスは許可
#

# DoCoMo (2003/12)
# http://www.nttdocomo.co.jp/p_s/imode/make/ip/
...続きを読む

Q特定サイトからのアクセスのみ許可させる方法

BC5と申します。
現在クローズドのwebサイトを運営しています。
そのサイトは下記の要件を満たしています。
1.特定サイトからしかアクセスさせない
2.ユーザーにID,WDなどを入力させずに利用してもらう
そのため、現在はhttpヘッダを見てリファラーで弾かせています。
最近、パーソナルファイアーウオールを導入しているクライアントが多く、httpヘッダに参照元を付加しなくなったため、他の方法を検討しています。基本http認証で、リンク元のサイトにID,PWDを埋め込む方法を試しましたが、NetscapeではID,PWDを引き継いでくれず、弾かれてしまいます。
どなたか良い方法をご存知でしたら教えてください。
よろしくお願いいたします。

Aベストアンサー

クライアント側IPは不定で、リンク元が固定ということですよね?
であれば、IPアドレスでの制限は難しいですね。

簡易的な方法としては、そのサイトのURLを複雑なものとして、リンク元しか指定できないような感じにしてしまうとか。
#reffererよりも信用できるかもしれませんね。

検索エンジン対策になるかどうかは不明ですが、こういったツールもありますね。
「HTMLエンティティ生成」
http://ab.jpn.ph/soft/html_rand.html

あと、2サイト間でcookieを横断させてチェックする方法もありそうですが、
そこら辺はあまり詳しくないので専門家からの意見待ちということで...すみません。


人気Q&Aランキング