mirror of
https://github.com/smarty-php/smarty.git
synced 2025-08-03 18:04:26 +02:00
Merge branch 'bugfix/template_object_sandbox_escape'
This commit is contained in:
@@ -6,6 +6,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
### Security
|
||||||
|
- Prevent access to `$smarty.template_object` in Security mode
|
||||||
|
|
||||||
## [3.1.38] - 2021-01-08
|
## [3.1.38] - 2021-01-08
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
0
expectException
Normal file
0
expectException
Normal file
@@ -81,6 +81,10 @@ class Smarty_Internal_Compile_Private_Special_Variable extends Smarty_Internal_C
|
|||||||
case 'template':
|
case 'template':
|
||||||
return 'basename($_smarty_tpl->source->filepath)';
|
return 'basename($_smarty_tpl->source->filepath)';
|
||||||
case 'template_object':
|
case 'template_object':
|
||||||
|
if (isset($compiler->smarty->security_policy)) {
|
||||||
|
$compiler->trigger_template_error("(secure mode) template_object not permitted");
|
||||||
|
break;
|
||||||
|
}
|
||||||
return '$_smarty_tpl';
|
return '$_smarty_tpl';
|
||||||
case 'current_dir':
|
case 'current_dir':
|
||||||
return 'dirname($_smarty_tpl->source->filepath)';
|
return 'dirname($_smarty_tpl->source->filepath)';
|
||||||
|
@@ -382,6 +382,15 @@ class SecurityTest extends PHPUnit_Smarty
|
|||||||
$this->smarty->security_policy->trusted_uri = array();
|
$this->smarty->security_policy->trusted_uri = array();
|
||||||
$this->assertContains('<title>Preface | Smarty</title>', $this->smarty->fetch('string:{fetch file="https://www.smarty.net/docs/en/preface.tpl"}'));
|
$this->assertContains('<title>Preface | Smarty</title>', $this->smarty->fetch('string:{fetch file="https://www.smarty.net/docs/en/preface.tpl"}'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* In security mode, accessing $smarty.template_object should be illegal.
|
||||||
|
* @expectedException SmartyCompilerException
|
||||||
|
*/
|
||||||
|
public function testSmartyTemplateObject() {
|
||||||
|
$this->smarty->display('string:{$smarty.template_object}');
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class mysecuritystaticclass
|
class mysecuritystaticclass
|
||||||
|
Reference in New Issue
Block a user