php富文本中防止xss,【PHP】富文本HTML过滤器:HTMLPurifier使用教程(防止XSS)

本来转载自:www.ttkmwl.com  --最全面的程序代码下载论坛-通天源码论坛

38070d18dc40e72fdb5bb1b0f8f0fd5d.png

在编程开发时安全问题是及其重要的,对于用户提交的数据要进行过滤,XSS就是需要重视的一点,先说一下什么是XSS,简单来说就是用户提交数据(例如发 表评论,发表日志)时往Web页面里插入恶意JavaScript代码例如死循环,疯狂的alert,这还不算还可能会修改页面页面上的html元素(例 如登录表单的action),这样当用户浏览该页之时,嵌入其中Web里面的代码会被执行,从而达到用户的特殊目的。

在使用PHP开发时,可以使用htmlspecialchars将用户提交过来的数据转换使之原样显示,但是这样一来会造成一些弊端,比如用户上传的图片 无法显示,html标签不会起作用,没有任何样式。解决方案就是可以使用UBB标签或者自定义标签来实现,要么就是自己写正则去过滤,但是防不胜防,并且 这样在处理起来有些繁琐。下载重点介绍一个开源的HTMLPurifier,这是一个符合W3C标准的HTML过滤器,可以生成标准的HTML代码,并且 有很多的自定义配置,我更关注的是可以过滤掉javascript代码,有效的防止XSS!

安装

使用composer安装

> composer require ezyang/htmlpurifier

Using version ^4.9 for ezyang/htmlpurifier

./composer.json has been updated

Loading composer repositories with package information

Updating dependencies (including require-dev)

- Installing ezyang/htmlpurifier (v4.9.3)

Downloading: 100%

Writing lock file

Generating autoload files

然后将vendor/autoload.php 引入项目中,即可使用

用法

$dirty_html=<<

Hello

EOF;

$config = \HTMLPurifier_Config::createDefault();

$purifier = new \HTMLPurifier($config);

$clean_html = $purifier->purify($dirty_html);

dump($clean_html);

输出结果如下:

Hello

过滤了XSS代码,过滤规则:

http://htmlpurifier.org/live/smoketests/xssAttacks.php

自动填充了残缺的标签

使用配置

$config = \HTMLPurifier_Config::createDefault();

// something....

$purifier = new \HTMLPurifier($config);

例如

function actionHtmlpurifer()

{

$dirty_html=<<

Hello

EOF;

$config = \HTMLPurifier_Config::createDefault();

//$config->set('HTML.Allowed', '');//过滤掉所有的HTML标签

//输出 Hello

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

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

//输出

Hello

$purifier = new \HTMLPurifier($config);

$clean_html = $purifier->purify($dirty_html);

dump($clean_html);

}

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值