2016-05-20 9 views
0

は、要素を検査して、Webページに<iframe> src valueを変更することで、新たなデータの取り込みを防ぐ方法を知りたいですか?iframe srcの変更をinspect要素でブロックしますか?

ウェブページでは、ビデオを表示しています(<iframe> element)。動画は購入後に利用できるようになります。すべての動画はそれだけで私たちのドメインを介して利用できるようになります、というVimeoに格納され、Vimeoの設定を使用して、このような方法で構成されています。

問題は ユーザーがビデオを購入すると、srcの値にアクセスして他のユーザーと共有できるようになります。そして、そのURLはちょうど私たちのウェブサイトに行くことができます検査要素と変更src値のいずれか<iframe> elementのWebページで、ビデオは購入せずにロードされます。これを防ぐためにどのように

? にページを読み込んだ後にコンテンツを読み込まないようにする方法はありますか?また、ユーザーがhtmlを編集し、<iframe> elementにURLを付けることができれば。 これは有料の動画をウェブページに実装する正しい方法ではありませんか?

私は完全にこの時点で立ち往生しています。 あなたのご意見をお寄せいただきありがとうございます。

更新:

  • は、私は、このオプションは、Googleドライブを使用することはできますか? google drive apiを使用すると、各ユーザーアカウントに動的にアクセスできます。
+1

を見るので、マークアップではありませんiframeなしでページ内で直接、これを防ぐ方法はありません。彼らがembed srcを持っているとすぐに、 – Rhumborl

+0

と言っているように、その周りを簡単に回ることができます。 – Dipak

+0

もしあなたがVimeoからサーバー経由でストリーミングしているのであれば、それは少なくとももっと難しくなり、リクエストにユーザー認証を入れることができます。しかし、Vimeoは 'iframe'埋め込み以外のものをサポートしていないようです。 – Rhumborl

答えて

2

これを防ぐことはできません。私はVimeoがあなたがビデオIDをチェックすることができるクロスウィンドウメッセージングを介してAPIを持っていない限り、クロスオリジンのセキュリティのために外部からの変更を検出することすらできないと確信しています - この場合、そのページがフレーム内のビデオIDを定期的に確認するようにします。

しかし、それでもやや高度な「ハッカー」の場合は、これはまったく問題にはなりません。一つは、ただでさえHTMLファイルには、希望のIFrameを含むと... 127.0.0.1それとも、NoScriptの拡張子を使用して無効にするには、あなたのドメインを指すhostsファイル内のエントリを設定し、サーバのローカルWebサーバを作成することによって、このシステム全体を打ち負かすことができあなたのビデオIDをチェックしているものは何でも。

一番下の行は、VimeoのURLをエーテルに送信すると、あなたはそれを制御できなくなりました。 Vimeoの代わりに自分のサーバーからビデオをストリーミングする以外に何もできることはありません.Vimeoでは独自のアクセス制御システムを実装できます。コンテンツに正当なアクセス権があることを確認した後、この特定のユーザーと時間にのみ有効なワンタイムトークンを作成します。

+0

私ができることは、自分のサーバーにビデオファイルを保存することだけです!この問題が処理されるVimeoよりはるかに優れたサービスプロバイダが他にありますか? – Dipak

+1

私は結論は、あなたがビデオサービスのために支払われた_real_を持っていたいなら、あなたはインフラストラクチャを支払う必要があるということです。それがビジネスのサイドライン部分であり、投資の価値がない場合、あなたは無料でそれらを手に入れている人たちを置く必要があります。 – Rhumborl

+0

質問を更新しました: - このオプションにはGoogleドライブを使用できますか? google drive apiを使用すると、各ユーザーアカウントに動的にアクセスできます。それは正しいでしょうか? – Dipak

1

あなたの問題は、サードパーティのホストを取り、存在しない認証を作成しようとしているです。

常時動作していませんが、urlが予期しない値に変更された場合、ページが許可されていないページにリダイレクトされる可能性があるsetIntervalタイマーを1秒間に数回試行できます。あなたは私はjavascriptを通じiframe要素をロードする最初に推薦するこのルートを行く場合は、ユーザーがJavaScriptを無効にした場合、あなたは、少なくともビデオを埋め込むことができない場合

、彼らは単にカントは、任意の動画

window.setInterval(function(){ 
    var frame = document.getElementById("frame"); 
    if(frame.src !== expectedSource){ 
     window.location.href = "unauthorized.html" // or something like that 
    } 
}, 300); 

// load iframe 
window.onload = function(){ 
    var frame = document.createElement("iframe"); 
    document.body.insertBefore(frame, container); // container implies an existin DOM element 
    frame.src = expectedSource; // you will need some way to get the expected source and load it 
} 
+0

ユーザーはスクリプトを無効にしてから要素を調べ、htmlを編集してsrc値を持つiframe要素を持つことができます。それがロードされます。 ** CherryDT **のように、 'ローカルWebサーバーの作成 'もまた失敗するだろう。あなたが言ったように、私はこのシナリオではサードパーティーが全面的に役に立たないように感じています。 – Dipak

+0

質問を更新しました: - このオプションにはGoogleドライブを使用できますか? google drive apiを使用すると、各ユーザーアカウントに動的にアクセスできます。それは正しいでしょうか? – Dipak

+1

これを無効にする別の方法は、IFrame自体の内部から 'src'を変更してから、外部ページがそれを検出できないようにすることです(セキュリティ上の理由から、私の答えで述べたように)。次の例を参照してください:https://www.jsnippet.net/snippet/1031/ – CherryDT

関連する問題