amashigeseiji/viewvalue

CakePHP 的 ViewValue 插件

安装: 42

依赖项: 0

建议者: 0

安全: 0

星标: 1

关注者: 2

分支: 0

开放问题: 0

类型:cakephp-plugin

0.9.0 2015-06-22 18:05 UTC

This package is auto-updated.

Last update: 2024-09-08 18:01:16 UTC


README

Build Status Coverage Status

此插件可以让您的 CakePHP 应用程序通过自动转义 View 变量来防止 XSS 注入。

需求

  • PHP >= 5.5
  • CakePHP >= 2.6

设置

Config/bootstrap.php

#Load ViewValue plugin
CakePlugin::load('ViewValue');

以及 Controller/AppController.php

public $helpers = array('ViewValue.ViewValue');

注意

如果变量已经通过在视图文件中使用 h() 辅助函数进行转义,则应删除 h()
这可能会导致双重转义。

描述

此插件将类型为 String/Array/Object 的 View 变量转换为 StringViewValue/ArrayViewValue/ObjectViewValue 的实例。
它们将按照其原始变量类型执行。
如果需要,您可以在视图文件中通过调用 raw() 方法来获取原始值。

示例代码

StringViewValue 作用与字符串相同。

#Controller/SampleController.php
public function index() {
	$this->set('xssstr', '<script>alert(0)</script>');
}
<!-- View/Smaple/index.ctp -->
<?php echo $xssstr; ?> <!-- &lt;script&gt;alert(0)&lt;/script&gt; (display correctly in browser) -->
<?php echo $xssstr->raw(); ?> <!-- <script>alert(0)</script> (script is triggered) -->

ArrayViewValue 作用与数组相同。

#Controller/SampleController.php
public function index() {
	$this->set('arr', array('<script>alert(0)</script>', 'hoge', array('fuga', array('hoge', 'fuga'))));
}
<!-- View/Smaple/index.ctp -->
<?php echo $arr[0]; ?> <!-- &lt;script&gt;alert(0)&lt;/script&gt; (display correctly in browser) -->
<?php var_dump($arr instanceof ArrayViewValue) ?> <!-- true -->
<?php var_dump($arr[0] instanceof StringViewValue) ?> <!-- true -->
<!-- `$arr[0]` is converted to `StringViewValue`. -->
<?php var_dump($arr[2][1] instanceof ArrayViewValue) ?> <!-- true -->
<!-- The value of any hierarchy will be converted into BaseViewValue inheritance. -->

<!-- off course you can use foreach -->
<?php
foreach ($arr as $val) {
	echo $val;
}
?>