নিরাপদ জাভাস্ক্রিপ্ট ইউআরএল দিয়ে ফ্রেম অ্যাক্সেস করার চেষ্টা


112

আমি নীচে ত্রুটিটি পেয়ে যাচ্ছি যখন আমি আইফ্রেমে প্যারেন্ট ইউআরএলটিতে একটি হ্যাশ মান সেট করার চেষ্টা করি যার মধ্যে অন্য ডোমেন ইউআরএল রয়েছে:

সুরক্ষিত জাভাস্ক্রিপ্ট ইউআরএল "ইউআরএল 2" এর ফ্রেম থেকে "ইউআরএল 1" ইউআরএল দিয়ে ফ্রেম অ্যাক্সেস করার চেষ্টা করছে। ডোমেন, প্রোটোকল এবং পোর্টগুলি অবশ্যই মিলবে।

আমি কিভাবে এই সমস্যা ঠিক করতে পারবো?


3
দয়া করে আরও বিশদ, কোড স্নিপেটস, ত্রুটি বার্তা, ফ্রেমওয়ার্ক আপনি ব্যবহার করুন .. আরও ভারবোসিটি, আরও বিশদ ..
ফিফিগিরি

5
আপনি যখন g + 1 বাস্তবায়ন করবেন তখন ফেসবুকের মতো বা shre এবং টুইটার সামাজিক প্লাগইনগুলি যা iframes এ লোড করে এবং একই ত্রুটি ছুঁড়ে ফেলছে?

প্রশ্নটি কেন ফেসবুক এবং গুগল স্ক্রিপ্টগুলি আমার ওয়েবসাইটের উপাদানগুলিতে অ্যাক্সেস করার চেষ্টা করছে।
সার্জিও

উত্তর:


124

বিভিন্ন উত্সের চাইল্ড ডকুমেন্ট থেকে আপনাকে উপরের উইন্ডোর location.hashসম্পত্তিতে অ্যাক্সেসের অনুমতি দেওয়া হয় না তবে আপনাকে locationসম্পত্তিটি সেট করার অনুমতি দেওয়া হয় ।

এর অর্থ এটি করা http://example.com/page/পরিবর্তে উপরের উইন্ডোজের অবস্থান

parent.location.hash = "#foobar";

আপনার পিতামাতার অবস্থান জানা এবং করা দরকার

parent.location = "http://example.com/page/#foobar";

যেহেতু সংস্থানটি নেভিগেট করা হয়নি এটি প্রত্যাশা অনুযায়ী কাজ করবে, কেবলমাত্র url এর হ্যাশ অংশটি পরিবর্তন করে changing

আপনি যদি ক্রস-ডোমেন যোগাযোগের জন্য এটি ব্যবহার করে থাকেন তবে আমি পরিবর্তে ইজিএক্সডিএম ব্যবহারের পরামর্শ দেব


13
এটিকে কেউ উত্তর হিসাবে চিহ্নিত করেনি এবং এখনও এটিতে 60০ টি আপভোট রয়েছে। এটির জন্য একটি ব্যাজ থাকা উচিত।
zachzurn

35
ব্যাজ কি বলা হবে? "একটি অলস ব্যক্তিকে প্রতিক্রিয়া জানানো হয়েছে"
এনজিফনাব

1
আরে @atul, সদয় হন এবং এই উত্তরটি সেরা হিসাবে চিহ্নিত করুন। আমাদের সকলকে অন্যের জ্ঞান থেকে উপকৃত হতে দেয় এমন সম্মেলনগুলির সাথে শ্রদ্ধাশীল হোন ...
ক্লিন্ট ইস্টউড

13

যখন দুটি ফ্রেমের আলাদা ডোমেন -> সুরক্ষা থাকে তখন ক্রসফ্রেম-স্ক্রিপ্টিং সম্ভব হয় না।

এটি দেখুন: http://javascript.about.com/od/references/a/frame3.htm

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


82
এটি একটি ঘন ঘন প্রয়োজনীয়তা যেখানে কোনও ব্যক্তি আপনার ওয়েবসাইটে তৃতীয় পক্ষের অ্যাপ্লিকেশন এম্বেড করে চলেছে, বিশেষত যেখানে ওয়েব পরিষেবা এবং এর মতো পছন্দ নয়।
জ্যাক

9

আমি iframe.src এর জন্য ডোমেন চ্যামেজ করার চেষ্টা করার সময় একই ত্রুটি বার্তা পেয়েছিলাম।

আমার জন্য, উত্তরটি ছিল iframe.src কে সেম ডোমেনের একটি ইউআরএলে রূপান্তর করা, তবে এটি আসলে পছন্দসই ডোমেনে একটি এইচটিএমএল পুনঃ-প্রত্যক্ষ পৃষ্ঠা ছিল। অন্য ডোমেনটি তখন কোনও ত্রুটি ছাড়াই আমার আইফ্রেমে প্রদর্শিত হয়েছিল।

কবজির মতো কাজ করেছেন। :)


আপনি এখানে যা করেছেন ঠিক কী সে সম্পর্কে আরও বিস্তারিত বলতে পারেন?
ডেভিন জি রোড

আপনি সংক্ষিপ্তভাবে ব্যাখ্যা করতে পারলে এটি সত্যিই সহায়ক হবে।
মধুসূদন

2
সর্বশেষতম ক্রোমে কাজ করে না: এটি এসআরসি প্যারামিটারটি পরীক্ষা করে না, তবে আসল URL টি লোড হয়েছে। সুতরাং পুনঃনির্দেশ কৌশলটি দুর্ভাগ্যক্রমে
কোনওভাবে

3
আমি বিশ্বাস করি টমি যা উল্লেখ করছেন এটি একটি সার্ভার সাইড প্রক্সি। দেখুন উদাঃ benalman.com/projects/php-simple-proxy বা developer.yahoo.com/javascript/howto-proxy.html বা google.com/... বা রেনে ডি ক্যাট এর সমাধান stackoverflow.com/a/11224975/27938
অস্কার অস্টিগার্ড

যে ঝরঝরে. তবে এটি কেবল চিত্রিত করে যে এটি প্রায় সাধারণভাবে পাওয়া কতটা তুচ্ছ। ঠিক আছে, আসুন আমরা ধরে নিই যে আমি একজন দুষ্কর্মী হ্যাকার, এবং আমি ক্রস ডোমেন স্ক্রিপ্টিং আক্রমণ চালাতে চাই। সম্ভাবনাগুলি আমি এই সরঞ্জামগুলি সম্পর্কে জানতে এবং সেগুলি ব্যবহার করতে যাচ্ছি। যতক্ষণ না ব্রাউজার সুরক্ষা স্থির করা যায়, এটি সহজেই যেমন প্রতিরোধযোগ্য যেমন IE আপনাকে কোনও সতর্কতা ছাড়াই স্থানীয়ভাবে জাভাস্ক্রিপ্ট চালাতে দেয় না। কোনও সমস্যা সমাধান করে। একগুচ্ছ নতুন তৈরি করে।
যিটজাক

6

একটি সমাধান হতে পারে একটি স্থানীয় ফাইল যা দূরবর্তী সামগ্রী পুনরুদ্ধার করে

remoteInclude.php

<?php
$url = $_GET['url'];
$contents = file_get_contents($url);
echo $contents;

এইচটিএমএল

<iframe frameborder="1" id="frametest" src="/remoteInclude.php?url=REMOTE_URL_HERE"></iframe>
<script>
    $("#frametest").load(function (){       
    var contents =$("#frametest").contents();
});


1
এটি ক্রস-সাইট স্ক্রিপ্টিং দুর্বলতার জন্য দরজা উন্মুক্ত করে। একটি সম্ভাব্য আক্রমণের একটি উদাহরণ: 1. আমি myevilserver.com একটি পৃষ্ঠা তৈরি করে শুধুমাত্র আপনার সাইট মত দেখায়, একটি লগইন ফর্ম পোস্টগুলি myevilserver.com ফিরে সহ 2. আমি একটি জাল নিউজলেটার আপনার ব্যবহারকারীদের কাছে একটি লিঙ্ক সমেত পাঠাতে https: // thyite.com/remoteIncolve.php?url=myevilserver.com ৩. তারা আপনার সাইটে একটি লগইন ফর্ম দেখে যা আমি আমার সার্ভারে ক্যাপচার করেছি।
এরিকপি

2
একটি সম্ভাব্য সমাধান হ'ল রিমোটইনক্লুড.পিএফপি ডোমেনগুলির প্রাক-অনুমোদিত তালিকার বিপরীতে সমস্ত url গুলি পরীক্ষা করে।
এরিকপি

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

3

আমি দেখতে পেলাম যে এইচটিএমএল 5 সংস্করণের পরিবর্তে ফেসবুকের এক্সএফবিএমএল সংস্করণ ব্যবহার করে এই সমস্যাটি ঠিক করা হয়েছে। নীচের কোডটি যুক্ত করুন যেখানে আপনি বোতামটি প্রদর্শিত হতে চান:

<div id="fb-root"></div>
<script>(function (d, s, id) {
    var js, fjs = d.getElementsByTagName(s)[0];
    if (d.getElementById(id)) return;
    js = d.createElement(s); js.id = id;
    js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1";
    fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>

<fb:like send="true" layout="button_count" width="50" show_faces="false" font="arial"></fb:like>

তারপরে এটি আপনার এইচটিএমএল ট্যাগে যুক্ত করুন:

 xmlns:fb="http://ogp.me/ns/fb#"

2
এই প্রশ্নটির সাথে ফেসবুকের কী সম্পর্ক?
কুকস

16
কারণ আপনিও এই ত্রুটিটি ফেসবুকে বোতামের মতো পান এবং উত্তরটি অনুসন্ধান করার সময় আমি এই পৃষ্ঠাটি পেয়েছিলাম যাতে ভেবেছিল অন্যদের উত্তরটির প্রয়োজন হতে পারে।
লুক অ্যাল্ডারটন

1

সমস্যাটি হ'ল এমনকি যদি আপনি একটি প্রক্সি তৈরি করেন বা সামগ্রীটি লোড করেন এবং এটি স্থানীয় হিসাবে ইনজেকশন করেন তবে সামগ্রীটি যে কোনও স্ক্রিপ্ট সংজ্ঞায়িত করে তা অন্য ডোমেন থেকে লোড হবে এবং ক্রস-ডোমেন সমস্যা সৃষ্টি করবে।

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