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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フォントの色を変えるには?
-
PHP8を使うと、大量のWarningが...
-
メールアドレスにメールが届い...
-
PHPでfatal errorが出ても無視...
-
これは例外処理でしょうか?
-
insertができない。
-
PHPで特定のURLにジャンプす...
-
urlの直接入力を防ぐには
-
パースエラーとは?
-
「@$変数」の「@の意味は?」
-
PHPで、エラーがない場合のみ画...
-
bindValueエラー
-
PHPにて外部サイト内容が取得不...
-
トランザクションが原因?DBに...
-
3つ以上の論理積は利用可能なの...
-
PHPのif文でその処理を途中で抜...
-
Subversionのリポジトリの削除
-
エンコーディングについて
-
FTPコマンドでディレクトリごと...
-
「クラス関数」「メンバ関数」...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フォントの色を変えるには?
-
トランザクションが原因?DBに...
-
PHPでネットワークドライブのop...
-
PHP8を使うと、大量のWarningが...
-
パースエラーとは?
-
ワードプレスサイト PHP8.0.25...
-
「@$変数」の「@の意味は?」
-
PHPで、エラーがない場合のみ画...
-
PHPにて外部サイト内容が取得不...
-
PHPでfatal errorが出ても無視...
-
iframeからのアクセスか、ブラ...
-
phpのrenameでエラーが出ます
-
正規表現での最後尾のバックス...
-
fsockopenの例外について
-
これは例外処理でしょうか?
-
PHPで特定のURLにジャンプす...
-
bindValueエラー
-
awsにApacheとPHPを入れて、何...
-
Localeクラスについて
-
PEARのライブラリを使うと文法...
おすすめ情報