Dotclear


Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • inc/admin/lib.dc.page.php

    r2871 r2909  
    1717{ 
    1818     private static $loaded_js = array(); 
     19     private static $xframe_loaded = false; 
    1920     private static $N_TYPES = array( 
    2021          "success" => "success", 
     
    5455 
    5556     # Top of admin page 
    56      public static function open($title='',$head='',$breadcrumb='') 
     57     public static function open($title='',$head='',$breadcrumb='',$options=array()) 
    5758     { 
    5859          global $core; 
     
    9192 
    9293          // Prevents Clickjacking as far as possible 
    93           header('X-Frame-Options: SAMEORIGIN'); // FF 3.6.9+ Chrome 4.1+ IE 8+ Safari 4+ Opera 10.5+ 
    94  
     94          if (isset($options['x-frame-allow'])) { 
     95               self::setXFrameOptions($options['x-frame-allow']); 
     96          } else { 
     97               self::setXFrameOptions(); 
     98          } 
    9599          echo 
    96100          '<!DOCTYPE html>'. 
     
    919923          return $GLOBALS['core']->adminurl->get('load.plugin.file',array('pf' => $file)); 
    920924     } 
     925 
     926     public static function setXFrameOptions($origin=null) { 
     927          if (self::$xframe_loaded) { 
     928               return; 
     929          } 
     930          if ($origin !== null) { 
     931               $url = parse_url($origin); 
     932               header(sprintf('X-Frame-Options: %s', is_array($url)?($url['scheme'].'://'.$url['host']):'SAMEORIGIN')); 
     933          } else { 
     934               header('X-Frame-Options: SAMEORIGIN'); // FF 3.6.9+ Chrome 4.1+ IE 8+ Safari 4+ Opera 10.5+ 
     935          } 
     936          self::$xframe_loaded = true; 
     937 
     938     } 
    921939} 
Note: See TracChangeset for help on using the changeset viewer.

Sites map