<?xml version="1.0" encoding="US-ASCII"?>
<!-- used xml2rfc v1 -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [

<!ENTITY RFC2119 SYSTEM "reference.RFC.2119.xml">
<!ENTITY RFC5234 SYSTEM "reference.RFC.5234.xml">
<!ENTITY RFC2616 SYSTEM "reference.RFC.2616.xml">
<!ENTITY RFC3864 SYSTEM "reference.RFC.3864.xml">
<!ENTITY RFC6454 SYSTEM "reference.RFC.6454.xml">
<!ENTITY RFC6648 SYSTEM "reference.RFC.6648.xml">
<!ENTITY RFC3986 SYSTEM "reference.RFC.3986.xml">
]>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<?rfc rfcedstyle="yes" ?>
<?rfc toc="yes"?>
<?rfc tocdepth="4"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes" ?>
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>
<rfc number="7034" category="info" consensus="yes" submissionType="IETF" ipr="trust200902">


  <!-- ***** FRONT MATTER ***** -->

  <front>
 

    <title abbrev="X-Frame-Options">HTTP Header Field X-Frame-Options</title>


    <author fullname="David Ross" initials="D."
            surname="Ross">
      <organization>Microsoft</organization>

      <address>
        <postal>
         <email>dross@microsoft.com</email>
          <street></street>

          <!-- Reorder these if your country does things differently -->
          <city></city>
          <region></region>
          <code></code>
          <country></country>
        </postal>

        <email>dross@microsoft.com</email>
        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>

    <author fullname="Tobias Gondrom" initials="T."
            surname="Gondrom">
      <organization>Thames Stanley</organization>
      <address>
        <postal>
          <street></street>
          <!-- Reorder these if your country does things differently -->
          <city></city>
          <region></region>
          <code></code>
          <country></country>
        </postal>
       
        <email>tobias.gondrom@gondrom.org</email>
        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>

    <date month="October" year="2013" />

    <area>General</area>

    <workgroup>WEBSEC</workgroup>

    <keyword>frame-options</keyword>
    <keyword>HTTP header</keyword>
    <keyword>websec</keyword>


    <abstract>
      <t>To improve the protection of web applications against clickjacking, this document describes the X-Frame-Options HTTP header
   field, which declares a policy, communicated from the server to the
   client browser, regarding whether the browser may display the transmitted
   content in frames that are part of other web pages.
      </t>
    </abstract>
  </front>

  <middle>
    <section title="Introduction">
      <t>In 2009 and 2010, many browser vendors (<xref target="Microsoft-X-Frame-Options"></xref>, 
      <xref target="CLICK-DEFENSE-BLOG"></xref>, and <xref target="Mozilla-X-Frame-Options"></xref>)
      introduced the use of a non-standard
      HTTP <xref target="RFC2616"></xref> header field
      "X-Frame-Options" to protect
      against <xref target="Clickjacking">clickjacking</xref>.
      HTML-based web applications can embed or "frame" other web
      pages. Clickjacking is a type of attack that occurs when an
      attacker uses multiple transparent or opaque layers in the user
      interface to trick a user into clicking on a button or link on
      another page from server B when they were intending to click on
      the same place of the overlaying page from server A.&nbsp; Thus, the
      attacker is "hijacking" clicks meant for page A and routing them
      to page B.&nbsp; The attacker is tricking the user (who sees the
      overlaying user interface content from page A) into clicking
      specific locations on the underlying page from server B,
      triggering some actions on server B and potentially using an
      existing session context in that step. This is an attack on both
      the user and on server B.&nbsp; In addition, server A may or may not be the
      attacker.
      </t>
      
      <t>This specification provides informational documentation about
      the current use and definition of the X-Frame-Options HTTP
      header field. As described in
      <xref target="variation_in_current_browser"/>, not all browsers
      implement X-Frame&nbhy;Options in exactly the same way, which
      can lead to unintended results. And, given that the "X-"
      construction is deprecated <xref target="RFC6648"></xref>, the
      X-Frame-Options header field will be replaced in the future by
      the Frame-Options directive in the Content Security Policy (CSP)
      version 1.1 <xref target="CSP-1-1"></xref>.
      </t>
      
      <t>A study <xref target="FRAME-BUSTING"></xref> demonstrated that
existing anti-clickjacking measures, e.g., frame-breaking JavaScript,  
      have weaknesses that allow their protection to be circumvented.
      </t>
      <t>Short of configuring the browser to disable frames and scripts entirely, 
      which massively impairs browser utility, browser users are vulnerable to this type of attack.
      </t>
      
      <t>The use of "X-Frame-Options" allows a web page from host B to declare that its content 
      (for example, a button, links, text, etc.) must not be displayed in a frame 
      (&lt;frame&gt; or &lt;iframe&gt;) of another page (e.g., from host A).  
      This is done by a policy declared in the HTTP header and enforced by browser implementations as documented here.
      </t>
      
   
      <section title="Requirements Language">
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
        "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
        document are to be interpreted as described in <xref
        target="RFC2119">RFC 2119</xref>.</t>
      </section>
    </section>

    <section title="X-Frame-Options Header">
    <t>The X-Frame-Options HTTP header field indicates a policy that specifies 
   whether the browser should render the transmitted resource within a 
   &lt;frame&gt; or an &lt;iframe&gt;. Servers can declare this policy in the header of 
   their HTTP responses to prevent clickjacking attacks, which ensures 
   that their content is not embedded into other pages or frames.
    </t>
    
    <section title="Syntax">
	<t>The header field name is:
<list>
       <t> X-Frame-Options	</t>
</list>
 	</t>


	<t>There are three different values for the header field.  These values
   are mutually exclusive; that is, the header field MUST be set to exactly one 
   of the three values.
	
  	<list style="hanging" hangIndent="6">
    <t hangText="DENY"><vspace />
          A browser receiving content with this header field MUST NOT display this content in any frame.
	</t>
    <t hangText="SAMEORIGIN"><vspace />
          A browser receiving content with this header field MUST NOT display this content in any frame from a 
          page of different origin than the content itself.</t>

         <t>If a browser or plugin cannot reliably determine whether
         or not the origin of the content and the frame are the same,
         this MUST be treated as "DENY".</t>

         <t>Please note that current implementations vary on the
         interpretation of this criteria.  In some, it only allows a
         page to be framed if the origin of the top-level browsing
         context is identical to the origin of the content using the
         X-Frame&nbhy;Options directive; in others, it may consider
         the origin of the framing page instead.  Also see
         <xref target="variation_in_current_browser"/> for more
         details on the nesting of frames and variations in the
         handling of this header field by different browsers.  In addition,
         refer to <xref target="Security_Considerations"/>, paragraph
         2 for the resulting potential security problems.
         </t>
    <t hangText="ALLOW-FROM">(followed by a serialized-origin <xref target="RFC6454"></xref>)<vspace />
         A browser receiving content with this header MUST NOT display this content in a 
         frame from any page with a top-level browsing context of different origin than the specified origin. 
         While this can expose the page to risks by the trusted origin, in some cases, it may be 
         necessary to allow the framing by content from other domains.
    </t>
  	</list>
  	
  	</t>
		
	<t>The meaning of the term "serialized-origin" is given in [RFC6454].<vspace />
	If the ALLOW-FROM value is used, it MUST be followed by a valid origin <xref target="RFC6454"></xref> 
	(as a subset of the URI <xref target="RFC3986"></xref>).</t>

    <t>Any data beyond the domain address (i.e., any data after the "/" separator) 
    is to be ignored. The algorithm to compare origins from <xref target="RFC6454"></xref> 
    SHOULD be used to verify that a referring page is of the same origin as the 
    content (in the case of SAMEORIGIN) or that the referring page's origin 
    is identical with the ALLOW-FROM serialized-origin (in the case of ALLOW-FROM). 
    Though in conflict with <xref target="RFC6454"></xref>, current implementations 
    do not consider the port as a defining component of the origin; i.e., existing 
    implementations differ with <xref target="RFC6454"></xref> in that origins with the 
    same protocol but different port values are considered equivalent.</t>
    


	<t>Wildcards or lists to declare multiple domains in one
	ALLOW-FROM statement are not permitted (see
	<xref target="ex-allow-from"/>).
	</t>
	
	</section>
	
      <section title=" Augmented Backus-Naur Form (ABNF)">
        <t>The <xref target="RFC5234">RFC 5234</xref> ABNF of the
        X-Frame-Options header field value is the
        following:<vspace /><vspace />
        

<figure>
<artwork align="left">
      X-Frame-Options = "DENY"
                / "SAMEORIGIN"
                / ( "ALLOW-FROM" RWS SERIALIZED-ORIGIN )  	
                
      RWS             = 1*( SP / HTAB )
                    ; required whitespace  
</artwork>
</figure>

	  with serialized-origin as defined in <xref target="RFC6454"></xref> and required whitespace 
	  (RWS) as defined in <xref target="HTTPbis-P1"></xref>. 
	 </t>
	  
	  <t>
	  RWS is used when at least one linear whitespace octet is required to separate field tokens. 
	  RWS SHOULD be generated as a single space (SP). Multiple RWS octets that occur within field-content 
	  SHOULD either be replaced with a SP or transformed to all SP octets before 
	  interpreting the field value or forwarding the message downstream.
	  </t>
	 
	 <t>SP and horizontal tab (HTAB) are as defined in Appendix B.1 of <xref target="RFC5234">RFC 5234</xref>.</t>
	  
	  <t>
	  The values are specified as ABNF strings; therefore, they are case-insensitive. 
	  </t>	  
	  
	  <section title="Examples of X-Frame-Options">
	  
<figure>
<artwork align="left">
    X-Frame-Options: DENY

    X-Frame-Options: SAMEORIGIN

    X-Frame-Options: ALLOW-FROM https://example.com/
</artwork>
</figure>
	  
	  </section>
	  
	  
	  
      </section>
      
      
      <section anchor="design" title="Design Issues">
		<section anchor="vectors" title="Enable HTML Content from Other Domains">
     <t>There are a number of main direct vectors that enable HTML content from other domains,
     and browser implementations of X-Frame-Options cover all of them:
		<list style="symbols">
        <t>IFRAME tag</t>   
        <t>Frame tag</t>
		<t>Object tag  (requires a redirect)</t>
		<t>Applet tag</t>
		<t>Embed tag</t>
		</list>      
      </t>
      <t>Besides these, other ways to host HTML content can be possible. For example, 
      some plugins may host HTML views directly. If these plugins appear 
      essentially as frames (as opposed to top-level windows), the plugins 
      must conform to the X-Frame-Options policy as specified in this document as well.
      </t>
		</section>
		
       	<section anchor="processing" title="Browser Behavior and Processing">
		<t>To allow secure implementations, browsers must behave in a consistent and reliable way.
		</t>

	   	<t>If an X-Frame-Options HTTP header field prohibits
	   	framing, the user agent of the browser MAY immediately
	   	abort downloading or parsing of the document.
		</t> 
	
	<section title="Violation of X-Frame-Options">
	<t>
	When a browser discovers that loaded content with the X-Frame-Options header field would be 
	displayed in a frame against the specified orders of the header, the browser SHOULD redirect 
	to a "NOFRAME" page as soon as possible. For example, this can be a noframe.html page that 
	also states the full URL and hostname of the protected page.
	</t>

	<t>The NOFRAME page could provide the user with an option to open the target URL in a new window.
	</t>
	<t>Implementations of this vary: some browsers will show a message that allows the user 
	to safely open the target page in a new window, whereas other implementations will simply render an empty frame.
	</t>
	</section>
	
	<section anchor="variation_in_current_browser" title="Variation in Current Browser Behavior">
	<t>There are currently variations in the implementation of the X-Frame&nbhy;Options header.
	For example, not all browsers support the "ALLOW&nbhy;FROM" option. 
	"ALLOW-FROM" was initially an Internet Explorer extension and, at the time of 
	writing, has not been uniformly implemented by other user agents.
    </t>
	<t>Furthermore, the criteria for the SAMEORIGIN (and ALLOW-FROM) directive may not be evaluated unanimously either:
        the known implementations in <xref target="Appendix_A"/> evaluate the SAMEORIGIN directive based on the
        origin of the framed page and the top-level browsing context, while other implementations 
        might evaluate it based on the framed page and the framing page, or the
whole chain of nested frames in between.     

	</t>
	
	<t>
	To illustrate the difference between the comparison of the "framing page" and the 
	"top-level browsing context", consider the following scenario: 
        web pages may embed frames with other pages that, in turn, embed frames with other pages as well, and so on. 
        In theory, this can result in an infinite nesting of framed pages.  For example, web page A may contain web page B 
        in a frame, and web page B may contain web page C in a frame.
<figure><artwork><![CDATA[
Web page A
<html>
....
<frame src="https://URI_of_web_page_B" />
</html>
  
Web page B
<html>
....
<frame src="https://URI_of_web_page_C" />
</html>

and so forth.      
]]></artwork></figure> 
	</t>     
	
<t>In this example, for the nested frames with the inner-framed web page C, 
the most outer web page A would be the "top-level browsing context", and web page B would be the "framing page".</t>
	  

	<t>These potential variations in the evaluation of the header by different
    implementations impair the usage and reliability of this HTTP
    header and have security implications as described in <xref target="Security_Considerations"/>. 
    A revised version of X-Frame-Options in the form of a Frame-Options directive 
    in CSP 1.1 <xref target="CSP-1-1"></xref> will unify the behavior, and it is expected 
    that newer implementations will use it rather than the mechanisms documented here.
	</t>
	</section>
	
	<section anchor="ex-allow-from" title="Usage Design Pattern and Example Scenario for the ALLOW-FROM Parameter">
	<t>As the "ALLOW-FROM" field only supports one serialized-origin, in cases when the server wishes 
	to allow more than one resource to frame its content, the following design pattern can fulfill that need:
	</t>
	<t><list style="numbers">
	<t>A page that wants to render the requested content in a frame supplies its own origin information 
	to the server providing the content to be framed via a query string parameter. 
	</t>
	<t>The server verifies that the hostname meets its criteria, so that
the page is allowed to be framed 
	by the target resource. This may, for example, happen via a lookup of a whitelist of trusted domain names 
	that are allowed to frame the page. For example, for a Facebook "Like" button, the server can check to
    see that the supplied hostname matches the hostname(s) expected for that "Like" button.
	</t>
	<t>The server returns the hostname in "X-Frame-Options: ALLOW-FROM" if the proper criteria was met in step #2.
	</t>
	<t>The browser enforces the "X-Frame-Options: ALLOW-FROM" header.
	</t>
	</list>
	</t>
	
	</section>
	<section anchor="no_caching" title="No Caching of the X-Frame-Options Header">
	<t>
	Caching the X-Frame-Options header for a resource is not recommended. 
	Caching the X-Frame-Options response could result in problems because: 
	
	
	<list style="numbers">
	<t>
	For every http-request of the resource, the browser has to check whether the
	X-Frame-Options header has been set and then act accordingly, as a resource itself 
	might be created dynamically and the header could change with it, too.
	</t>
	<t>
 	Also, as outlined in <xref target="ex-allow-from"/>, servers may generate
	X-Frame-Options header responses depending on the request.
 	Example case: Considering that we have only one serialized-origin in the
 	ALLOW-FROM directive, imagine a user has multiple pages open in his
 	browser tabs with web page 1 from domain A and web page 2 
 	from domain B, and both frame the same page from domain C with the ALLOW-FROM
 	directive. In that case, the page needs to reply to both requests with
	different X-Frame-Options headers, with the first pointing to origin A and the second pointing to origin B.
	</t>
	</list>


	
	However, we found that none of the major browsers listed in <xref target="Appendix_A"/> cache the responses.
	</t>
	</section>
	
      </section>
      
      </section>

    </section>


    <!-- Possibly a 'Contributors' section ... -->

    <section anchor="IANA" title="IANA Considerations">
      <t>IANA has included the specified HTTP
      header in the "Permanent Message Header Field Name" registry as outlined
      in <xref target="RFC3864">"Registration Procedures for Message
      Header Fields"</xref>.</t>

	  <section anchor="reg-template" title="Registration Template">

	


        <artwork align="left">
Permanent Message Header Field Names Template:

Header field name: X-Frame-Options

Applicable protocol: http [RFC2616]

Status: Informational
      
Author/change controller: IETF

Specification document(s): RFC 7034

Related information: None
       </artwork>

      
	  </section>

    </section>


    <section anchor="Security_Considerations" title="Security Considerations">
      <t>The introduction of the X-Frame-Options HTTP header field improves the 
      protection against clickjacking. However, it is not self-sufficient enough
      to protect against all kinds of these attack vectors. It must be used in 
      conjunction with other security measures like secure coding (e.g., input validation, output encoding, etc.)
      and the Content Security Policy version 1.0 <xref target="CSP"></xref>.
      </t>
      
       <t>It is important to note that current implementations do not check the origins 
      of the framing resources' entire ancestor tree of frames, and this may expose 
      the resource to attack in multiple-nested scenarios. 
      </t>
      
      <t>
      The browser implementations evaluate based on the origin of the framed page and the top-level browsing context 
      (i.e., the most outer frame): </t>

      <t>If a resource from origin A embeds untrusted content from origin B, 
      that untrusted content can embed another resource from origin A with an 
      "X-Frame-Options: SAMEORIGIN" policy, and that check would pass when the user agent 
      only verifies the top-level browsing context. 
      Therefore, web developers should be aware that embedding content from other sites can
      leave their web pages vulnerable to clickjacking even if the X-Frame-Options header is used. 
      </t>
      
      <t>Furthermore, X-Frame-Options must be sent as an HTTP header field and is 
      explicitly ignored by user agents when declared with a meta http&nbhy;equiv tag.
      </t>
      
         
      <section title="Privacy Considerations">
      <t>
      There are two kinds of potential data leakage to consider: 
      </t>
      <t><list style="numbers">
      <t>
      Using X-Frame-Options with the parameter ALLOW-FROM allows a page to guess or infer information about who is framing it. 
      A web server may answer requests with the "X-Frame-Options: ALLOW-FROM" header and thus 
      determine which other page is framing it. 
      This is inherent by design, but it may lead to data-leakage or data-protection concerns.
	  </t>
      <t>
      The web server using the ALLOW-FROM directive effectively discloses the origin specified in the header.


      If a web server wishes to reduce this leakage, it is recommended to generate the 
      ALLOW-FROM header for each request based on the design pattern as described in <xref target="ex-allow-from"/>.
      </t>
      </list></t>
      
	  </section>
  
    </section>
  </middle>

  <!--  *****BACK MATTER ***** -->

  <back>
   
<?rfc rfcedstyle="no" ?>
    <references title="Normative References">
      <!--?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml"?-->
      &RFC2119;

      &RFC5234;

      &RFC3986;
      
      &RFC6454;
      
         


    </references>

    <references title="Informative References">
      <!-- Here we use entities that we defined at the beginning. -->


      &RFC2616;

      &RFC3864;

      &RFC6648;
      
	
	<reference anchor='CSP'
           target='http://www.w3.org/TR/2012/CR-CSP-20121115/'>
  <front>
    <title>Content Security Policy 1.0</title>
    <author fullname='Brandon Sterne' surname='Sterne' initials='B. '/>
    <author fullname='Adam Barth' surname='Barth' initials='A. '/>
    <date year='2012' month='November' />
  </front>
  <seriesInfo name='W3C Candidate Recommendation' value='CR-CSP-20121115'/>
</reference>
 
<reference anchor='CSP-1-1'
           target='http://www.w3.org/TR/2013/WD-CSP11-20130604/'>
  <front>
    <title>Content Security Policy 1.1</title>
    <author fullname='Adam Barth' surname='Barth' initials='A. '/>
    <author fullname='Mike West' surname='West' initials='M. '/>
    <date year='2013' month='June' />
  </front>
  <seriesInfo name='W3C Working Draft' value='WD-CSP11-20130604'/>
</reference>

      <reference anchor="Clickjacking"
                 target="http://www.owasp.org/index.php/Clickjacking">
        <front>
          <title>Clickjacking</title>
          <author>
            <organization>OWASP (Open Web Application Security Project)</organization>
          </author>
          <date month="April" year="2013" />
        </front>
      </reference>



      <reference anchor="CLICK-DEFENSE-BLOG"
                 target="http://blogs.msdn.com/b/ie/archive/2009/01/27/ie8-security-part-vii-clickjacking-defenses.aspx">
        <front>
          <title>IE8 Security Part VII: Clickjacking Defenses</title>
          <author fullname='Eric Lawrence' surname='Lawrence' initials='E.'>
            <organization></organization>
          </author>
          <date month="January" year="2009" />
        </front>
       <seriesInfo name='Microsoft Developer Network' value='Blogs'/>
      </reference>
      
      <reference anchor="Microsoft-X-Frame-Options"
                 target="http://blogs.msdn.com/b/ieinternals/archive/2010/03/30/combating-clickjacking-with-x-frame-options.aspx">
        <front>
          <title>Combating ClickJacking With X-Frame-Options</title>
          <author fullname='Eric Lawrence' surname='Lawrence' initials='E.'>
            <organization></organization></author>
          <date month="March" year="2010" />
        </front>
       <seriesInfo name='Microsoft Developer Network' value='Blogs'/>
      </reference>
      
      <reference anchor="Mozilla-X-Frame-Options"
                 target="https://developer.mozilla.org/en-US/docs/The_X-FRAME-OPTIONS_response_header">
        <front>
          <title>The X-Frame-Options response header</title>
          <author>
            <organization>Mozilla Developer Network</organization>
          </author>
          <date month="August" year="2013" />
        </front>
      </reference>
      
       <reference anchor="CSRF"
                 target="https://www.owasp.org/index.php/Top_10_2013-A8-Cross-Site_Request_Forgery_%28CSRF%29">
        <front>
          <title>Top-10 2013-A8-Cross-Site Request Forgery (CSRF)</title>
          <author>
            <organization>OWASP (Open Web Application Security Project)</organization>
          </author>
          <date month="June" year="2013" />
        </front>
      </reference>
      
       <reference anchor="FRAME-BUSTING"
                 target="http://seclab.stanford.edu/websec/framebusting/">
        <front>
          <title>Busting frame busting: a study of clickjacking vulnerabilities at popular sites</title>
          <author>
            <organization>Stanford Web Security Research</organization>
          </author>
          <date month="July" year="2010" />
        </front>
      </reference>   

      <!-- draft-ietf-httpbis-p1-messaging-23, Active -->
      <reference anchor="HTTPbis-P1">
        <front>
          <title>Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing</title>
          <author fullname='Roy Fielding' surname='Fielding' initials='R.'><organization /></author>
          <author fullname='Julian' surname='Reschke' initials='J.'><organization /></author>
         <date month="July" year="2013" />
        </front>
       <seriesInfo name='Work in' value='Progress'/>
      </reference>     
            
    </references>
<?rfc rfcedstyle="yes"?>
    
    <section anchor ="Appendix_A" title="Browsers That Support X-Frame-Options">
    <t><list style="symbols">
    <t>Internet Explorer 8+
    </t>
    <t>Firefox 3.6.9+ 
    </t>
    <t>Opera 10.5+ 
    </t>
    <t>Safari 4+ 
    </t>
    <t>Chrome 4.1+
    </t>
    </list>
    </t>
    </section>

    <section anchor="app-Clickjacking-description" title="Description of a Clickjacking Attack">
      <t>A more detailed explanation of clickjacking scenarios follows.</t>
      <section anchor="scenario-1" title="Shop">
      <t>An Internet marketplace/shop offering a feature with a link/button to "Buy this" gadget
	  wants their affiliates (who could be malicious attackers) to be able 
	  to stick the "Buy such and such from XYZ" IFRAMES into their pages. 
	  There is a possible clickjacking threat here, which is why the marketplace/online shop 
	  needs to then immediately navigate the main browsing context (or a new window) 
	  to a confirmation page that is protected by anti-clickjacking protections.
      </t> 
      </section>
	<section anchor="scenario-2" title="Online Shop Confirm Purchase Page">
	<t>The "Confirm Purchase" page of an online shop must be shown to the end-user 
	without the risk of an overlay or misuse by an attacker. For that reason,
        the confirmation page uses a combination of anti&nbhy;CSRF (Cross Site Request Forgery <xref target="CSRF"></xref>) tokens 
        and the X-Frame&nbhy;Options HTTP header field, mitigating clickjacking attacks.
	</t>
    </section>
         <section anchor="scenario-3" title="Flash Configuration">
      	<t>Macromedia Flash configuration settings are set by a Flash object
   		that can run only from a specific configuration page on Macromedia's
   		site. The object runs inside the page and thus can be subject to a
   		clickjacking attack. In order to prevent clickjacking attacks
   		against the security settings, the configuration page uses the
   		X-Frame-Options directive.
		</t>
      </section>
    </section>

   <section anchor="Acknowledgements" title="Acknowledgements">
      <t>This document was derived from input from specifications published by various browser 
      vendors such as Microsoft (Eric Lawrence and David Ross), Mozilla, Google, Opera, and Apple.</t>
    </section>
 


  </back>
</rfc>
