কীভাবে আইফ্রেমে 'এক্স-ফ্রেম-অপশন' সেট করবেন?


170

যদি আমি এটির iframeমতো তৈরি করি :

var dialog = $('<div id="' + dialogId + '" align="center"><iframe id="' + frameId + '" src="' + url + '" width="100%" frameborder="0" height="'+frameHeightForIe8+'" data-ssotoken="' + token + '"></iframe></div>').dialog({

আমি কীভাবে ত্রুটিটি ঠিক করতে পারি:

'https://www.google.com.ua/?gws_rd=ssl'কোনও ফ্রেমে প্রদর্শন করতে অস্বীকৃতি জানায় কারণ এটি 'এক্স-ফ্রেম-বিকল্পগুলি' সেট করে 'সাম্যুরিজিন' to

জাভাস্ক্রিপ্ট দিয়ে?

উত্তর:


227

আপনি সেট করতে পারে না X-Frame-Optionsউপর iframe। এটি এমন একটি প্রতিক্রিয়া শিরোনাম যা ডোমেন দ্বারা সেট করা হয়েছে যা থেকে আপনি সংস্থার জন্য অনুরোধ করছেন ( google.com.uaআপনার উদাহরণে)। তারা এক্ষেত্রে শিরোনাম সেট করেছে SAMEORIGIN, যার অর্থ তারা iframeতাদের ডোমেনের বাইরের অংশে সংস্থানটি লোড করার বিষয়টি অস্বীকার করেছেন । আরও তথ্যের জন্য এমডিএন - তে এক্স-ফ্রেম-বিকল্পগুলির প্রতিক্রিয়া শিরোনামটি দেখুন।

শিরোনামগুলির একটি দ্রুত পরিদর্শন (ক্রোম বিকাশকারী সরঞ্জামগুলিতে এখানে দেখানো হয়েছে) X-Frame-Optionsহোস্টের কাছ থেকে ফিরে আসা মানটি প্রকাশ করে ।

এখানে চিত্র বর্ণনা লিখুন


7
ইউটিউবের সাহায্যে আপনি শেষের পয়েন্ট URL টি "এম্বেড" সংস্করণে পরিবর্তন করতে পারেন। দেখুন stackoverflow.com/questions/25661182/... (আমি জানতে পারি যে এটি কঠোরভাবে নয় কি ওপি অনুসন্ধান করছে সে, কিন্তু Google প্রথমে এই ফলাফল দেয়!)

73

X-Frame-Optionsঅনুরোধ করা ডোমেন যদি নিজেকে একটি ফ্রেমের মধ্যে প্রদর্শিত হতে দেয় তবে তা জানাতে অনুরোধের প্রতিক্রিয়ায় অন্তর্ভুক্ত একটি শিরোনাম । জাভাস্ক্রিপ্ট বা এইচটিএমএল এর সাথে কোন সম্পর্ক নেই, এবং অনুরোধের সূচক দ্বারা পরিবর্তন করা যাবে না।

এই ওয়েবসাইটটি এটিতে প্রদর্শিত হতে অস্বীকার করার জন্য এই শিরোনামটি সেট করেছে iframe। ক্লায়েন্ট এই আচরণ বন্ধ করতে পারে এমন কিছুই নেই।

এক্স-ফ্রেম-বিকল্পগুলিতে আরও পড়া


এটি প্রতিক্রিয়া শিরোনামে সেট করা হয়েছে, শিরোনামের অনুরোধ নয়। তবে অন্যথায় সঠিক ব্যাখ্যা!
নিকং

2
@ নিকং সেটাই আমার অর্থ, তবে আমি সম্মত হই যে পরিভাষাটি পরিষ্কার ছিল না। আমি কোনও বিভ্রান্তি দূর করতে এটি সম্পাদনা করেছি। ধন্যবাদ।
ররি ম্যাকক্রসন

31

আপনি যদি সার্ভারের নিয়ন্ত্রণে থাকেন তবে এই আইফ্রেমের সামগ্রী প্রেরণ করে X-Frame-Optionsআপনি নিজের ওয়েবসভারে সেটিংস সেট করতে পারেন ।

অ্যাপাচি কনফিগার করা হচ্ছে

সমস্ত পৃষ্ঠার জন্য এক্স-ফ্রেম-বিকল্প শিরোনাম প্রেরণ করতে, এটি আপনার সাইটের কনফিগারেশনে যুক্ত করুন:

Header always append X-Frame-Options SAMEORIGIN

এনগিনেক্স কনফিগার করা হচ্ছে

এক্স-ফ্রেম-অপশন শিরোনাম প্রেরণের জন্য এনগিনেক্স কনফিগার করতে, এটি আপনার এইচটিপি, সার্ভার বা অবস্থানের কনফিগারেশনে যুক্ত করুন:

add_header X-Frame-Options SAMEORIGIN;

কোনও কনফিগারেশন নেই

এই শিরোনাম বিকল্পটি isচ্ছিক, সুতরাং বিকল্পটি যদি একেবারে সেট না করা থাকে তবে আপনি এটি পরবর্তী উদাহরণে কনফিগার করার বিকল্পটি দেবেন (যেমন দর্শকের ব্রাউজার বা প্রক্সি)

উত্স: https://developer.mozilla.org/en-US/docs/Web/HTTP/X-Frame-Options


এটি আমাকে সাহায্য করেছিল। আমি এই দুটি লাইনটি মন্তব্য করেছি: add_header Strict-Transport-Security "max-age=86400; includeSubdomains"; add_header X-Frame-Options DENY;এনজিনেক্স-স্নিপেটগুলি থেকে এবং তারপরে এটি সরাসরি কাজ করেছিল।
Zeth

এনজিআইএনএক্স, ভিতরে বলা উচিত, কোথায় গুরুত্বপূর্ণ ?
পিটার ক্রাউস

পিটার ক্রাউস, আপনি কি চান?
rubo77

14

যেহেতু সমাধানটি সার্ভারের পক্ষে বলা হয়নি:

একজনকে এ জাতীয় জিনিস সেট করতে হবে (অ্যাপাচি থেকে উদাহরণস্বরূপ), এটি সর্বোত্তম বিকল্প নয় যেমন এটি সবকিছুতে অনুমতি দেয় তবে আপনি নিজের সার্ভারটি সঠিকভাবে কাজ করার পরে আপনি সহজেই সেটিংস পরিবর্তন করতে পারবেন।

           Header set Access-Control-Allow-Origin "*"
           Header set X-Frame-Options "allow-from *"

5

সত্যিই নয় ... আমি ব্যবহার করেছি

 <system.webServer>
     <httpProtocol allowKeepAlive="true" >
       <customHeaders>
         <add name="X-Frame-Options" value="*" />
       </customHeaders>
     </httpProtocol>
 </system.webServer>

এটি সমাধানের মতো দেখায় তবে এটি কি সুরক্ষা লঙ্ঘন?
দইগুর্টু

1
এটা না আপনার সাইটের জন্য অক্ষম একই উৎপত্তি নীতিতে একটি ভাল ধারণা যদি না জানেন আপনি ঠিক কি করছেন। এম্বেড করা সামগ্রীতে আপনার থেকে আলাদা ডোমেনগুলিকে অনুমতি দেওয়া উচিত নয়। দেখুন codecademy.com/articles/what-is-cors এবং অনুরূপ টিউটোরিয়াল।
slhck


2

এক্স-ফ্রেম-বিকল্পগুলি এইচটিটিপি রেসপন্স শিরোনামটি একটি ব্রাউজারকে একটিতে কোনও পৃষ্ঠা রেন্ডার করার অনুমতি দেওয়া উচিত কিনা তা নির্দেশ করতে ব্যবহার করা যেতে পারে <frame>, <iframe>বা <object>। সাইটগুলি এটিকে ক্লিকের জ্যাকিং আক্রমণগুলি এড়াতে ব্যবহার করতে পারে, নিশ্চিত করে তাদের সামগ্রী অন্য সাইটে এম্বেড করা হয়নি।

আরও তথ্যের জন্য: https://developer.mozilla.org/en-US/docs/Web/HTTP/Heeda/X-Frame-Otions

এই সমস্যার জন্য আমার একটি বিকল্প সমাধান আছে, যা আমি পিএইচপি ব্যবহার করে প্রদর্শিত করতে যাচ্ছি:

iframe.php:

<iframe src="target_url.php" width="925" height="2400" frameborder="0" ></iframe>

target_url.php:

<?php 
  echo file_get_contents("http://www.example.com");
?>

5
পৃষ্ঠাটি লোড হওয়ার পরে এটি কী ব্যবহারযোগ্য সমাধান? ইনিটাল লোডের পরে কি আমি পৃষ্ঠাগুলির সাথে ইন্টারঅ্যাক্ট করতে সক্ষম হব? সামগ্রীটি লোড হওয়ার পরে কী ডোমেনের জন্য প্রতিটি অনুরোধের প্রক্সি করা উচিত নয়?
টিমোথি গঞ্জালেজ

0

এই উদ্দেশ্যে আপনাকে আপনার অ্যাপাচি বা অন্য যে কোনও পরিষেবা ব্যবহার করছেন সেটির অবস্থানের সাথে মিল রাখতে হবে

আপনি যদি অ্যাপাচি ব্যবহার করেন তবে httpd.conf ফাইলে।

  <LocationMatch "/your_relative_path">
      ProxyPass absolute_path_of_your_application/your_relative_path
      ProxyPassReverse absolute_path_of_your_application/your_relative_path
   </LocationMatch>

0

সমাধানটি হ'ল ব্রাউজার প্লাগইন ইনস্টল করা।

যে ওয়েব সাইটটি HTTP শিরোনামকে X-Frame-Optionsএকটি মান দিয়ে DENY(বা অন্য SAMEORIGINকোনও সার্ভার উত্স সহ) ইস্যু করে তা কোনও আইফ্রেমে একীভূত হতে পারে না ... যদি না আপনি ব্রাউজার প্লাগইন ইনস্টল করে এই আচরণটি পরিবর্তন না করেন যা শিরোনামকে উপেক্ষা করে না X-Frame-Options(যেমন ক্রোমের এক্স-ফ্রেম শিরোনাম উপেক্ষা করুন) )।

নোট করুন যে এটি সুরক্ষার কারণে কোনও ক্ষেত্রেই সুপারিশ করা হয়নি।


0

আপনি যদি সাইটের লাইফ করতে চান এমন সাইটের ওয়েব কনফিগারেশনে এক্স-ফ্রেম-বিকল্পটি সেট করতে পারেন

<httpProtocol>
    <customHeaders>
      <add name="X-Frame-Options" value="*" />
    </customHeaders>
  </httpProtocol>

যদি আমি স্ট্যাকওভারফ্লো খুলতে চাই তবে আমি ওয়েব কনফিগারেশনটি কোথায় খুঁজে পাব? এটি সার্ভারের পক্ষে নয়?
ইরাম জাহরা

-1

আপনি এইচটিএমএল বডিতে এক্স-ইফ্রেমকে সত্যই যুক্ত করতে পারবেন না কারণ এটি সাইটের মালিক দ্বারা সরবরাহ করতে হবে এবং এটি সার্ভারের নিয়মের মধ্যে রয়েছে।

আপনি সম্ভবত যা করতে পারেন তা হ'ল একটি পিএইচপি ফাইল তৈরি করুন যা লক্ষ্য ইউআরএলটির সামগ্রী লোড করে এবং যদি পিএইচপি ইউআরএল iframe করে, এটি মসৃণভাবে কাজ করা উচিত।


1
"আপনি সম্ভবত" তারপরে এটি কোনও মন্তব্য হিসাবে পোস্ট করতে পারেন যদি এটির উত্তর না হয়
এমকে

যদি এটির উত্তর এমকে পরিণত হয় তবে কী
সুশান্ত চৌধারি

তারপরে এটি একটি পরামর্শ যা কাজ করেছে, একটি নির্দিষ্ট সমাধান নয়, তাই এটি একটি মন্তব্য হিসাবে রাখা উচিত
এম কে

-2

আপনি এটি টমক্যাট উদাহরণ স্তরের কনফিগার ফাইল (ওয়েব.এক্সএমএল) তে করতে পারেন ওয়েব.এক্সএমএল কনফিগারেশন ফাইলে 'ফিল্টার' এবং ফিল্টার-ম্যাপিং 'যুক্ত করতে। এটি সমস্ত পৃষ্ঠায় [এক্স-ফ্রেম-বিকল্পগুলি = DENY] যুক্ত করবে কারণ এটি একটি বিশ্বব্যাপী সেটিংস।

<filter>
        <filter-name>httpHeaderSecurity</filter-name>
        <filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class>
        <async-supported>true</async-supported>
        <init-param>
          <param-name>antiClickJackingEnabled</param-name>
          <param-value>true</param-value>
        </init-param>
        <init-param>
          <param-name>antiClickJackingOption</param-name>
          <param-value>DENY</param-value>
        </init-param>
    </filter>

  <filter-mapping> 
    <filter-name>httpHeaderSecurity</filter-name> 
    <url-pattern>/*</url-pattern>
</filter-mapping>

-3

আপনি যদি এক্সএমএল পদ্ধতির অনুসরণ করেন তবে নীচের কোডটি কাজ করবে।

    <security:headers>
        <security:frame-options />
        <security:cache-control />
        <security:content-type-options />
        <security:xss-protection />
    </security:headers>
<security:http>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.