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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
<?php
/* * This file is part of Twig. * * (c) Fabien Potencier * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */
/** * @final */ class Twig_Extension_Sandbox extends Twig_Extension { protected $sandboxedGlobally; protected $sandboxed; protected $policy;
public function __construct(Twig_Sandbox_SecurityPolicyInterface $policy, $sandboxed = false) { $this->policy = $policy; $this->sandboxedGlobally = $sandboxed; }
public function getTokenParsers() { return [new Twig_TokenParser_Sandbox()]; }
public function getNodeVisitors() { return [new Twig_NodeVisitor_Sandbox()]; }
public function enableSandbox() { $this->sandboxed = true; }
public function disableSandbox() { $this->sandboxed = false; }
public function isSandboxed() { return $this->sandboxedGlobally || $this->sandboxed; }
public function isSandboxedGlobally() { return $this->sandboxedGlobally; }
public function setSecurityPolicy(Twig_Sandbox_SecurityPolicyInterface $policy) { $this->policy = $policy; }
public function getSecurityPolicy() { return $this->policy; }
public function checkSecurity($tags, $filters, $functions) { if ($this->isSandboxed()) { $this->policy->checkSecurity($tags, $filters, $functions); } }
public function checkMethodAllowed($obj, $method) { if ($this->isSandboxed()) { $this->policy->checkMethodAllowed($obj, $method); } }
public function checkPropertyAllowed($obj, $method) { if ($this->isSandboxed()) { $this->policy->checkPropertyAllowed($obj, $method); } }
public function ensureToStringAllowed($obj) { if ($this->isSandboxed() && is_object($obj)) { $this->policy->checkMethodAllowed($obj, '__toString'); }
return $obj; }
public function getName() { return 'sandbox'; } }
class_alias('Twig_Extension_Sandbox', 'Twig\Extension\SandboxExtension', false);
|