Blame view

vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/SafeObject.php 1.9 KB
abf1649b   andryeyev   Чистая установка ...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
  <?php
  
  /**
   * A "safe" object module. In theory, objects permitted by this module will
   * be safe, and untrusted users can be allowed to embed arbitrary flash objects
   * (maybe other types too, but only Flash is supported as of right now).
   * Highly experimental.
   */
  class HTMLPurifier_HTMLModule_SafeObject extends HTMLPurifier_HTMLModule
  {
      /**
       * @type string
       */
      public $name = 'SafeObject';
  
      /**
       * @param HTMLPurifier_Config $config
       */
      public function setup($config)
      {
          // These definitions are not intrinsically safe: the attribute transforms
          // are a vital part of ensuring safety.
  
          $max = $config->get('HTML.MaxImgLength');
          $object = $this->addElement(
              'object',
              'Inline',
              'Optional: param | Flow | #PCDATA',
              'Common',
              array(
                  // While technically not required by the spec, we're forcing
                  // it to this value.
                  'type' => 'Enum#application/x-shockwave-flash',
                  'width' => 'Pixels#' . $max,
                  'height' => 'Pixels#' . $max,
                  'data' => 'URI#embedded',
                  'codebase' => new HTMLPurifier_AttrDef_Enum(
                      array(
                          'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0'
                      )
                  ),
              )
          );
          $object->attr_transform_post[] = new HTMLPurifier_AttrTransform_SafeObject();
  
          $param = $this->addElement(
              'param',
              false,
              'Empty',
              false,
              array(
                  'id' => 'ID',
                  'name*' => 'Text',
                  'value' => 'Text'
              )
          );
          $param->attr_transform_post[] = new HTMLPurifier_AttrTransform_SafeParam();
          $this->info_injector[] = 'SafeObject';
      }
  }
  
  // vim: et sw=4 sts=4