কীভাবে আইএফআরএমকে শীর্ষ-স্তরের উইন্ডোটি পুনঃনির্দেশ করা থেকে প্রতিরোধ করবেন


133

কিছু ওয়েবসাইটের IFRAMEঘেরগুলি "ব্রেক আউট" করার কোড রয়েছে , যার অর্থ যদি কোনও পৃষ্ঠা একটি পিতামাতার পৃষ্ঠার অভ্যন্তর Aহিসাবে লোড করা হয় তবে কিছু জাভাস্ক্রিপ্ট বাইরের উইন্ডোটিতে পুনঃনির্দেশ করে ।IFRAMEPAA

সাধারণত এই জাভাস্ক্রিপ্টটি এরকম কিছু দেখায়:

<script type="text/javascript">
  if (top.location.href != self.location.href)
     top.location.href = self.location.href;
</script>

আমার প্রশ্নটি: পিতামাতার পৃষ্ঠার Pলেখক এবং অভ্যন্তরীণ পৃষ্ঠার লেখক না হওয়ায় Aআমি কীভাবে Aএই ব্রেক-আউটটি আটকাতে পারি ?

পিএস আমার কাছে মনে হচ্ছে এটি ক্রস-সাইট সুরক্ষা লঙ্ঘন হওয়া উচিত, তবে তা তা নয়।


আমি মনে করি না আপনি কিছু করতে পারবেন না ... আপনি যদি ফ্রেম সামগ্রীর লেখক না হন।
স্কানলিফ

উত্তর:


43

অনবনেডলোড সম্পত্তিটি ব্যবহার করে দেখুন, যা ব্যবহারকারী পৃষ্ঠা থেকে দূরে নেভিগেট করতে চায় কিনা তা চয়ন করতে দেয়।

উদাহরণ: https://developer.mozilla.org/en-US/docs/Web/API/Window.onbefireunload

এইচটিএমএল 5 এ আপনি স্যান্ডবক্সের সম্পত্তি ব্যবহার করতে পারেন। নীচে পঙ্করত এর উত্তর দেখুন। http://www.html5rocks.com/en/tutorials/security/sandboxed-iframes/


1
iFrames না ব্যবহার করে, ক্রস ডোমেইন যোগাযোগ অনুমতি যদিও, postMessage। এটি কোনও সুরক্ষা ঝুঁকি নয়, তবে কেউ আপনার মন্তব্য দেখলে এই সক্ষমতা বিদ্যমান বলে জানতে পারে। :)
কোরআর

এই উত্তরটি লেখার সময় এটি সম্ভব ছিল না। এটি নির্দেশ করার জন্য আপনাকে ধন্যবাদ।
fasih.rana

@ স্যারডিয়ারিয়াস আপনি দয়া করে একটি উদাহরণ দেখাতে পারেন, খুব প্রশংসিত
ব্যবহারকারী 198989

এই নিশ্চয়তাটি কেন প্রদর্শিত হবে তা ব্যবহারকারী জানবেন না এবং সম্ভবত একটি এলোমেলো প্রতিক্রিয়া নির্বাচন করবেন। আমি এটি ব্যবহার করার পরামর্শ দিচ্ছি না। অন্যান্য সমাধান আছে - sandbox
অরিয়াদাম

1
@ ফসিহ.রানা দ্বিতীয় প্রবন্ধটি আমাকে অনেক সাহায্য করেছে। আপনাকে ধন্যবাদ;)
MrD

127

এইচটিএমএল 5 এর সাথে iframe স্যান্ডবক্স বৈশিষ্ট্য যুক্ত করা হয়েছিল। এটি লেখার সময় ক্রোম, সাফারি, ফায়ারফক্স এবং আইই ও অপেরার সাম্প্রতিক সংস্করণগুলিতে কাজ করে তবে আপনি যা চান তা বেশ কার্যকর করে:

<iframe src="url" sandbox="allow-forms allow-scripts"></iframe>

যদি আপনি চাই প্রতি অনুমতি টপ লেভেল পুনঃনির্দেশ উল্লেখ sandbox="allow-top-navigation"


কিসের অপেক্ষা? তারা আপনাকে এই করতে দেয়? আমি ভেবেছিলাম যে কোনও ওয়েবসাইট ভাঙতে চাইলে সমস্ত ব্রাউজার তা বন্ধ করে দেয়। লোকেরা কীভাবে এই ওয়েবসাইটটিকে চারপাশের সাথে আইফ্রেমে বাইরে রাখবে? আমি যদিও অভিযোগ করছি না, দুর্দান্ত।
ফরহের

3
প্রতিষেধকটি এখানে রয়েছে: ব্লগস.এমএসএনএন বিবি
ইনটার্নালস

1
@ স্টেফেনসার্কসম ক্যামেনার আপনি যদি নিজের সাইটটিকে আইফ্রেমে প্রদর্শিত হতে বাঁচাতে চান তবে সেখানে এস -ফ্রেম-অপশন শিরোনাম রয়েছে স্মিরিগিন মান সহ। বেশিরভাগ আধুনিক ব্রাউজারগুলি এই শিরোলেখের সাথে iframe এ সাইটটি প্রদর্শন করবে না।
গ্রজেগোর্জ

4
দুর্ভাগ্যক্রমে sandboxস্যান্ডবক্সযুক্ত ফ্রেমে ফ্ল্যাশ বা অন্য কোনও ধরণের অবজেক্টকে অনুমতি দেয় না, sandboxবৈশিষ্ট্যটি অনেক ক্ষেত্রে অকেজো করে তোলে ।
অরিয়াদাম

1
ওয়েবসাইটগুলিকে আইফ্রেমে অন্তর্ভুক্ত করার প্রতিবাদ করার জন্য "ব্রেকআপ" করা উচিত নয়। এগুলি কেবল কোনও বার্তা দেখাতে বা ফাঁকা যেতে পারে। দুর্ভাগ্যক্রমে, স্ক্রিপ্টগুলি যদি আইফ্রেমে চালিত করা যায় তখনও আপনাকে (1)}} এবং অন্যান্য অসীম লুপগুলি করার সময় আপনাকে দুর্বৃত্ত ইফ্রেমে খোলে। আমি আশা করি প্রতিটি ইফ্রামে তার নিজস্ব থ্রেড পেতে পারে।
গ্রেগরি মাগারশাক

51

আমি স্যান্ডবক্স ব্যবহার করি = "..."

  • অনুমতি-ফর্মগুলি ফর্ম জমা দেওয়ার অনুমতি দেয়
  • অনুমতি-পপআপগুলি পপআপগুলিকে অনুমতি দেয়
  • অনুমতি-পয়েন্টার-লক পয়েন্টার লক অনুমতি দেয়
  • অনুমতি-একই-উত্স দস্তাবেজটির উত্স বজায় রাখতে দেয়
  • স্ক্রিপ্টগুলি জাভাস্ক্রিপ্ট কার্যকর করার অনুমতি দেয় এবং বৈশিষ্ট্যগুলি স্বয়ংক্রিয়ভাবে ট্রিগার করতে দেয়
  • অনুমতি-শীর্ষ-নেভিগেশন ডকুমেন্টটিকে শীর্ষ-স্তরের উইন্ডোতে নেভিগেট করে ফ্রেম থেকে বেরিয়ে আসতে দেয়

শীর্ষস্থানীয় নেভিগেশন হ'ল আপনি যা প্রতিরোধ করতে চান, তাই এটি ছেড়ে দিন এবং এটি অনুমোদিত হবে না। যে কিছু বাকি রয়েছে তা অবরুদ্ধ করা হবে

প্রাক্তন।

        <iframe sandbox="allow-same-origin allow-scripts allow-popups allow-forms" src="http://www.example.com"</iframe>

3
নোট করুন যে ফ্ল্যাশ (এবং অন্য কোনও অবজেক্ট) এটিকে অবরুদ্ধ করা হবে, যার অনুমতি দেওয়ার কোনও বিকল্প নেই। এই "সুরক্ষা বৈশিষ্ট্য" আমাকে সমস্ত একসাথে স্যান্ডবক্স ব্যবহার করতে বাধা দিচ্ছে
1515

8

W3.org স্পেক পড়ার পরে । আমি স্যান্ডবক্সের সম্পত্তি পেয়েছি।

আপনি সেট করতে পারেন sandbox="", যা iframe পুনর্নির্দেশ থেকে বাধা দেয়। বলা হচ্ছে এটি আইফ্রেমে পুনর্নির্দেশ করবে না। আপনি ক্লিকটি মূলত হারাবেন।

উদাহরণ এখানে: http://jsfiddle.net/ppkzS/1/
স্যান্ডবক্স ছাড়াই উদাহরণ: http://jsfiddle.net/ppkzS/


4

আমি জানি প্রশ্নটি হয়ে যাওয়ার পরে এটি অনেক দিন হয়ে গেছে তবে এখানে আমার উন্নত সংস্করণ এটি যদি পরবর্তী আইনের জন্য 500 মিমি অপেক্ষা করবে কেবল তখনই যদি iframe লোড হয়।

<script type="text/javasript">
var prevent_bust = false ;
    var from_loading_204 = false;
    var frame_loading = false;
    var prevent_bust_timer = 0;
    var  primer = true;
    window.onbeforeunload = function(event) {
        prevent_bust = !from_loading_204 && frame_loading;
        if(from_loading_204)from_loading_204 = false;
        if(prevent_bust){
            prevent_bust_timer=500;
        }
    }
    function frameLoad(){
        if(!primer){
            from_loading_204 = true;
            window.top.location = '/?204';
            prevent_bust = false;
            frame_loading = true;
            prevent_bust_timer=1000;
        }else{
            primer = false;
        }
    }
    setInterval(function() {  
        if (prevent_bust_timer>0) {  
            if(prevent_bust){
                from_loading_204 = true;
                window.top.location = '/?204';
                prevent_bust = false;
            }else if(prevent_bust_timer == 1){
                frame_loading = false;
                prevent_bust = false;
                from_loading_204 = false;
                prevent_bust_timer == 0;
            }



        }
        prevent_bust_timer--;
        if(prevent_bust_timer==-100) {
            prevent_bust_timer = 0;
        }
    }, 1);
</script>

এবং onload="frameLoad()"এবং onreadystatechange="frameLoad();"ফ্রেম বা আইফ্রেম যোগ করা উচিত নয়।


3

2

যেহেতু আপনি ইফ্রেমের অভ্যন্তরে যে পৃষ্ঠাটি লোড করেছেন সেটি একটি সেটইন্টারভাল সহ "ব্রেক আউট" কোডটি কার্যকর করতে পারে, তাই অনবনের ফাইলটি ব্যবহারিক নাও হতে পারে, যেহেতু এটি ব্যবহারকারীকে বাদ দিতে পারে আপনি কি নিশ্চিত যে আপনি ছেড়ে যেতে চান? ' ডায়ালগ।

এছাড়াও আইফ্রেমে সুরক্ষা বৈশিষ্ট্য রয়েছে যা কেবল আইই ও অপেরাতে কাজ করে

:(


2

আমার ক্ষেত্রে আমি ব্যবহারকারীটি অভ্যন্তরীণ পৃষ্ঠাটি দেখতে চাই যাতে সার্ভারটি তাদের আইপিটিকে একটি দর্শক হিসাবে দেখতে পারে। আমি যদি পিএইচপি প্রক্সি কৌশল ব্যবহার করি তবে আমার মনে হয় যে অভ্যন্তরীণ পৃষ্ঠাটি আমার সার্ভার আইপিটি দর্শকের হিসাবে দেখতে পাবে তাই এটি ভাল নয়। আমি এখনও অবধি কেবলমাত্র সমাধানটি পেয়েছি তা হ'ল অনবর্ধনযন্ত্র। এটি আপনার পৃষ্ঠায় রাখুন:

<script type="text/javascript">
    window.onbeforeunload = function () {                       
         return "This will end your session";
    }
</script>

এটি ফায়ারফক্সে এবং যেমন উভয়ই কাজ করে যা আমি যা পরীক্ষা করেছি। আপনি evt.return (যাই হোক না কেন) বোকা জাতীয় কিছু ব্যবহার করে সংস্করণগুলি পাবেন ... যা ফায়ারফক্সে কাজ করে না।


0

এটি করে আপনি ফ্রেম পৃষ্ঠাটির কোনও ক্রিয়াকলাপ নিয়ন্ত্রণ করতে সক্ষম হবেন যা আপনি পারবেন না। একই ডোমেন উত্স নীতি প্রয়োগ করা হয়।


20
আমি আইফ্রেমের ভিতরে কী আছে তা নিয়ন্ত্রণ করতে বলছি না। আমি আইএফআরএম এর ভিতরে থাকা বিষয়গুলি আমাকে নিয়ন্ত্রণ করা থেকে বিরত রাখতে বলছি ।
জেসন কোহেন 20
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.