PHPIN.NET

 找回密码
 立即注册
查看: 5870|回复: 0

[扩展应用] Yii框架中使用CHtmlPurifier过滤文本内容防止XSS攻击

[复制链接]

469

主题

31

回帖

5569

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5569
发表于 2015-1-19 21:33:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
Yii框架中使用CHtmlPurifier过滤文本内容防止XSS攻击
1、在控制器中使用:
  1. public function actionCreate()
  2. {
  3.     $model=new News;

  4.     $purifier = new CHtmlPurifier();
  5.     $purifier->options = array(
  6.         'URI.AllowedSchemes'=>array(
  7.             'http' => true,
  8.             'https' => true,
  9.         ),
  10.         'HTML.Allowed'=>'div',
  11.     );

  12.     if(isset($_POST['News']))
  13.     {
  14.         $model->attributes=$_POST['News'];
  15.         $model->attributes['content'] = $purifier->purify($model->attributes['content']);
  16.         if($model->save())
  17.             $this->redirect(array('view','id'=>$model->id));
  18.     }
  19. }
复制代码
2、在模型中的使用:
  1. protected function beforeSave()
  2. {
  3.     $purifier = new CHtmlPurifier();
  4.     $purifier->options = array(
  5.         'URI.AllowedSchemes'=>array(
  6.             'http' => true,
  7.             'https' => true,
  8.         ),
  9.         'HTML.Allowed'=>'div',
  10.     );

  11.     if(parent::beforeSave()){
  12.         if($this->isNewRecord){
  13.             $this->create_data = date('y-m-d H:m:s');
  14.             $this->content = $purifier->purify($this->content);
  15.         }
  16.         return true;
  17.     }else{
  18.         return false;
  19.     }
  20. }
复制代码
3、在过滤器中的使用:
  1. public function filters()
  2. {
  3.     return array(
  4.         'accessControl', // perform access control for CRUD operations
  5.         'postOnly + delete', // we only allow deletion via POST request
  6.         'purifier + create', //载入插入页面时进行些过滤操作
  7.     );
  8. }

  9. public function filterPurifier($filterChain){
  10.     $purifier = new CHtmlPurifier();
  11.     $purifier->options = array(
  12.         'URI.AllowedSchemes'=>array(
  13.             'http' => true,
  14.             'https' => true,
  15.         ),
  16.         'HTML.Allowed'=>'div',
  17.     );
  18.     if(isset($_POST['news']){
  19.         $_POST['news']['content'] = $purify($_POST['news']['content']);
  20.     }
  21.     $filterChain->run();
  22. }
复制代码
4、在视图中的使用:
  1. <?php $this->beginWidget('CHtmlPurifier'); ?>
  2.     ...显示用户输入的内容在这里....
  3. <?php $this->endWidget(); ?>
复制代码


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|PHPIN.NET ( 冀ICP备12000898号-14 )|网站地图

GMT+8, 2024-10-31 08:20

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表