
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で質問しましょう!
似たような質問が見つかりました
- Android(アンドロイド) 標準ブラウザがAndroidシステムWebviewのブラウザになってるAndroid端末を教えてくだ 2 2022/12/02 12:35
- その他(インターネット接続・インフラ) ブラウザにIPアドレス入力した時 1 2022/06/16 19:08
- システム システムにインターネットからアクセスする際、URLではなく、IPアドレスでブラウザからアクセスするこ 2 2022/07/28 09:52
- VPN VPNの匿名性に関する質問 1 2022/07/18 07:05
- Chrome(クローム) PC版Chromeで特定サイトの読み込み時のデータ量を軽減したい(特に画像データ) 1 2023/02/09 17:50
- Gmail Googleアプリを開くショートカットキーはありますか? 1 2022/07/06 09:42
- au(KDDI) 「カメラへのアクセスを許可してください」のせいで年齢確認書類を撮影できない、アップロードできない 2 2022/11/01 00:04
- Facebook AndroidのFacebookモバイルブラウザ(Facebookアプリで外部リンクにアクセスするF 2 2023/01/26 18:23
- フリーソフト イーファンビューでwebpファイルが開けません 1 2022/07/12 07:07
- YouTube 「動画スポットライト」を、PC ブラウザ のYouTube で、動画をふつうに見る方法はありますか? 1 2022/05/05 15:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フォントの色を変えるには?
-
「file_get_contents」で「HTTP...
-
PHPにて外部サイト内容が取得不...
-
fsockopenの例外について
-
トランザクションが原因?DBに...
-
PHPとPostgreSQL接続 (スキーマ)
-
PHPでfatal errorが出ても無視...
-
awsにApacheとPHPを入れて、何...
-
パースエラーとは?
-
ASPをPHPに移植したいですが、...
-
PHPでSMTPを使ってメール送信で...
-
「@$変数」の「@の意味は?」
-
PHP、unpack関数でのエラー
-
error_reporting(0);にも関わら...
-
PHP8を使うと、大量のWarningが...
-
iframeからのアクセスか、ブラ...
-
メールアドレスにメールが届い...
-
PHPのif文でその処理を途中で抜...
-
iphoneで虫眼鏡の作り方
-
FTPコマンドでディレクトリごと...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フォントの色を変えるには?
-
PHP8を使うと、大量のWarningが...
-
パースエラーとは?
-
トランザクションが原因?DBに...
-
「@$変数」の「@の意味は?」
-
PHPで、エラーがない場合のみ画...
-
PHPでfatal errorが出ても無視...
-
PHPにて外部サイト内容が取得不...
-
iframeからのアクセスか、ブラ...
-
PHPでネットワークドライブのop...
-
error_reporting(0);にも関わら...
-
ある条件に当てはまったときに...
-
phpのエラー(T_LNUMBER)について
-
PHP関数 mb_strlenでエラーになる
-
正規表現での最後尾のバックス...
-
これは例外処理でしょうか?
-
日本語をGETで渡す場合UR...
-
ワードプレスサイト PHP8.0.25...
-
PHPで特定のURLにジャンプす...
-
PHP mb_send_mail メール送信 5...
おすすめ情報