标签归档:Yii

Yii中在线编辑器接收用户输入内容,如何防御XSS攻击

//xss攻击演示代码
$str = '<img src="http://www.baidu.com/img/bdlogo.png" width="180" onload="window.location=\'http://www.baidu.com\'">';
//echo $str; //页面自动跳转到baidu.com

$p = new CHtmlPurifier();
$str = $p->purify($str);
echo $str; //已是安全代码

单独使用
require_once __DIR__ . ‘/HTMLPurifier.standalone.php’;

$html = ‘test‘;

$config = HTMLPurifier_Config::createDefault();

//HTMLPurifier的配置文档主要是两级分类:
//大类分Attr(属性)、HTML(html标签)、AutoFormat(自动格式)、CSS(css配置)、Output(输出配置)
//小类选择通过大类名称加.加小类名称可以完成

//过滤掉所有html标签很简单,原因则在白名单机制完成
$config->set(‘HTML.Allowed’, ”);

//配置允许的html标签
$config->set(‘HTML.Allowed’, ‘p,a,b,span’);

//保留超链接标签a及其href链接地址属性
$config->set(‘HTML.Allowed’, ‘a[href]’);

//并自动添加target属性值为’_blank’
$config->set(‘HTML.TargetBlank’, true);

// 让文本自动添加段落标签,前提是必须允许P标签的使用
//$config->set(‘HTML.Allowed’, ‘p’);
//$config->set(‘AutoFormat.AutoParagraph’, true);

//$config->set(‘HTML.Allowed’, ‘p,a,b,span’);

// 清除空标签
$config->set(‘AutoFormat.RemoveEmpty’, true);
$purifier = new HTMLPurifier($config);
$html = $purifier->purify($html);
echo htmlspecialchars($html);

Yii如何做多条件like模糊查询+分页

//接收GET传值
$name = Yii::app()->request->getQuery(‘name’);
$age = Yii::app()->request->getQuery(‘age’);

$criteria = new CDbCriteria();

//拼装查询条件
if (!empty($name)) {
$criteria->addCondition(‘name like :name’);
$criteria->params[‘:name’] = ‘%’ . $name . ‘%’;
}
if (!empty($age)) {
$criteria->addCondition(‘age = :age’);
$criteria->params[‘:age’] = $age;
}

//分页
$page = new CPagination();
$page->pageSize = 20;
$page->itemCount = User::model()->count($criteria);
$page->applyLimit($criteria);

//排序
$criteria->order = ‘id Desc’;

//查询数据
$users = User::model()->findAll($criteria);

//加载视图
$this->render(‘index’, array(
‘data’ => $data,
‘page’ => $page,
));