
No.2ベストアンサー
- 回答日時:
$_SERVER["HTTP_REFERER"]に参照元が設定されているので
設定されていない、もしくは想定されていない参照元であった場合
エラー画面に飛ばすようにしてみたらどうでしょうか?
ただし、単純にブラウザにアドレスを入れて表示とかなら防げますが
参照元は偽装可能ですので厳密に他からアクセスをさせないなどという場合には向いてません。
なるほど!
リファラーがインラインフレームを開いているURLか見ればいいんですね!
たしかに、偽装されたら…
って思いましたけど、この回答でいいアイディアが浮かびました!
インラインフレームで読むURLにGETパラメータを添加してるんですが
そこには書かずにリファラーのURL内からスプリットしてパラメータを取ろうと思います。
リファラーとパラメータの照合
これでだいぶマシになりそうです!
No.3
- 回答日時:
srcで指定するときに適当なパラメーターを渡して
<iframe src="hoge.html?frame=true"></iframe>
呼び出されるページ内でそのパラメーターが受け取れるかテストする
○JavaScript
location.search.match("frame=true")
location.search.indexOf("frame=true")
○PHP
isset($_GET["frame"]) && $_GET["frame"]==true
パラメーターを直接入力されたら判別できないですが、
表向きは何も出ないので割と有効なんじゃないかと思います。
ありがとうございます!
この方法は、僕も最初に考え実装していました。
しかし、この方法だとフレーム内で右クリック→プロパティを見る事で
パラメーター付きURLがフルで表示されてしまって…
しかし、2番目の方の回答を参考に
リファラーのURLからスプリットしてパラメーターを取る方式に変えました。
すると、フレームで指定するURLにはパラメーターを付けなくてよいので
当然、プロパティで表示されるURLはパラメーター無しのURLになります。
回答を参考に、現状は下記の対策を実装しました。
1、リファラーが取れたかのチェック
2、リファラーのURLが指定ドメインを含んでいるかチェック
3、リファラーをスプリットしてパラメーター類を取得し照合
そして、1番目の方のJavaScriptを+α
といった感じで、NGの場合はTOPにリダイレクトさせました。
これで、前よりはだいぶマシになりました!
知識がある人には突破されてしまうの難点ですが…
No.1
- 回答日時:
>直接ブラウザからアクセスされた場合はエラー
第一にiframeが必須という時点でどうかと思いますが
PHPで判断することはかなり難しいのでjavascriptなどでやるしかないかも
(まあ回避策はいくらでもあるのですが)
iframeで呼び出すソースにこんな風に書いておく・・・
<script>
if(window==top.window) location.href="トップページ";
</script>
セッションやクッキーをからめればできないこともないかもしれませんが
メリットがほとんどない処理なので、あまりお勧めしません
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
phpのIF条件分岐で、代入する値...
-
PHPでSMTPを使ってメール送信で...
-
ASPをPHPに移植したいですが、...
-
あらゆる例外に対応できるエラ...
-
bindValueエラー
-
PHP8を使うと、大量のWarningが...
-
phpでこの記述をもっと簡単に書...
-
PHPで、エラーがない場合のみ画...
-
qmailによるメールの受信について
-
正規表現での最後尾のバックス...
-
phpのエラー(T_LNUMBER)について
-
フォントの色を変えるには?
-
[php初心者]サイトを見てデータ...
-
PHP、unpack関数でのエラー
-
PHPのif文でその処理を途中で抜...
-
define でのルートディレクト...
-
rmdirでフォルダが消せません
-
バッチを用いたフォルダの自動移動
-
phpのftp_putについて
-
makefile でファイルをコピーす...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フォントの色を変えるには?
-
PHPでネットワークドライブのop...
-
トランザクションが原因?DBに...
-
PHPでfatal errorが出ても無視...
-
PHP8を使うと、大量のWarningが...
-
「@$変数」の「@の意味は?」
-
PHPで、エラーがない場合のみ画...
-
関数の引数に未定義の変数を渡...
-
PHPにて外部サイト内容が取得不...
-
php7のhtmlentitiesはEUC-JPを...
-
phpのエラー(T_LNUMBER)について
-
SELECTの値を保持する
-
@fileとは
-
\\x00 でエラー
-
ある条件に当てはまったときに...
-
bindValueエラー
-
error_reporting(0);にも関わら...
-
パースエラーとは?
-
require_once で読み込まれたか?
-
Localeクラスについて
おすすめ情報