首先引用别人的原话: HTML Purifier:PHP防止xss跨站攻击利器

xss是什么?

(百度到的→)XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和客户端脚本。 比如说在博客的新建文章的编辑框里输入 然后保存,以后每次访问这篇文章都会弹提示框出来。

怎么防止?

html purifier的方式的过滤掉 比如编辑框里的文本是1 2 3 ,然后过滤之后,存进数据库的是1 2 3,所以访问文章就不会有提示框弹出啦。

HTML Purfiler怎么用?

官方文档:http://htmlpurifier.org/live/configdoc/plain.html

好啦是全英的,反正我也看不太懂_(:з」∠)_, 就挑一些我会的又比较重要的来说咯

1.首先是使用这个库的基本格式

require_once 'library/HTMLPurifier.auto.php';

$config = HTMLPurifier_Config::createDefault();

//这里配置$config,以下2 3 4点的代码都是插在这里啵

$purifier = new HTMLPurifier($config);

$dirty_html = " 要过滤的字符串";

$clean_Html = $purifier->purify($dirty_html);//过滤后的字符串

2.配置Attr(属性)

$config->set('Attr.EnableID', true); // 允许使用id

$config->set('Attr.IDPrefix', 'test_'); // 给所有id加上前缀test_

$config->set('Attr.AllowedClasses', array('test_by_willko'));// 设置允许使用的class名

$config->set('Attr.ForbiddenClasses', array('ignore'));// 设置拒绝使用的class名

比如:

使用了

$config->set('Attr.EnableID', true); // 允许使用id

$config->set('Attr.IDPrefix', 'test_'); // 给所有id加上前缀test_

↓ h1的id加了前缀了,其他没有id就没有变

3.配置HTML(html标签)

$config->set('HTML.AllowedElements',array('tr','div','h1'),true);//设置允许的tagname

$config->set('HTML.ForbiddenElements',array('div'),true);//设置拒绝使用的tagname

$config->set('HTML.Allowed','div'); //设置允许的标签名

$config->set('HTML.SafeScripting',array(''));//第二个参数是什么好像结果都是一样的...

比如:

(1)使用了

$config->set('HTML.AllowedElements',array('tr','div','h1'),true);//设置允许的tagname

↓(忽略br,那是我方便查看所以加在前面的)h1和div标签都可以,但p标签被过滤了

(2)使用了

$config->set('HTML.SafeScripting',array(''));//第二个参数是什么好像结果都是一样的...

说明一下,第二个参数是什么都会把script的内容显示出来,嗯貌似也有点用的样子...

↓把script文本过滤出来了

4.其他 AutoFormat(自动格式)、CSS(css配置)、Output(输出配置)

$config->set('CSS.AllowedProperties',array('width'),true);//设置允许的CSS属性

$config->set('AutoFormat.RemoveEmpty', true);  // 清除空标签

比如:

使用了

$config->set('CSS.AllowedProperties',array('width'),true);//设置允许的CSS属性

↓ style中width能出来,height就被过滤了

PS:官方有很多不同的配置,可以去官方文档里面深扒,我这里只列举一些重要的(并且我会的_(:з」∠)_),还望大神指点...

总代码块:

require_once 'library/HTMLPurifier.auto.php';

$config = HTMLPurifier_Config::createDefault();

//$config->set('Attr.EnableID', true); // 允许使用id

//$config->set('Attr.IDPrefix', 'test_'); // 给所有id加上前缀test_

//$config->set('Attr.AllowedClasses', array('test_by_willko'));// 设置允许使用的class名

//$config->set('Attr.ForbiddenClasses', array('ignore'));// 设置拒绝使用的class名

//$config->set('HTML.AllowedElements',array('tr','div','h1'),true);//设置允许的tagname

//$config->set('HTML.ForbiddenElements',array('div'),true);//设置拒绝使用的tagname

//$config->set('HTML.Allowed','div'); //设置允许的标签名

//$config->set('HTML.SafeScripting',array(''));//第二个参数是什么好像结果都是一样的...

//$config->set('CSS.AllowedProperties',array('width'),true);//设置允许的CSS属性

//$config->set('AutoFormat.RemoveEmpty', true); // 清除空标签

$purifier = new HTMLPurifier($config);

$dirty_html = "

123

321

";

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

echo "处理前
";

echo $dirty_html;

echo "处理后
";

echo $clean_Html;

?>

主页:http://htmlpurifier.org/

参考:http://blog.csdn.net/hanzengyi/article/details/43019479

php富文本防注入_HTML Purifier,PHP中过滤富文本防止XSS攻击相关推荐

  1. purifier用来过滤危险的标签xss

    htmlpurifier下载地址:   http://htmlpurifier.org/ purifier下载地址:   https://github.com/mewebstudio/Purifier ...

  2. php单选按钮关闭文本框,使用php在html中显示单选按钮文本(Display radio button text in html with php)...

    使用php在html中显示单选按钮文本(Display radio button text in html with php) 我从数据库中获取数据并正常显示到html页面. 我想把数组值输出到单选按 ...

  3. c#sql防注入模糊查询_SQL中利用LIKE实现模糊查询的功能

    大家好,今日继续讲解<VBA数据库解决方案>,今日讲解的内容是:利用ADO,实现模糊查询.在上一讲中,我们实现了利用ADO快速查找的功能,今日我们实现工作表中模糊查找的功能.我们仍是利用上 ...

  4. python怎么读取pdf为文本_如何从pdf文件中提取特定文本python

    我试图摘录这段文字:DLA LAND AND MARITIME ACTIVE DEVICES DIVISION PO BOX 3990 COLUMBUS OH 43218-3990 USA Name: ...

  5. html文本框向下合并,Word中多个文本框该怎么合并?

    在使用word制作流程图的时候往往会使用到较多的文本框,文本框绘制完成后需要将一部分或者所有的文本框进行组合.但是一个一个的去点击文本框效率很低,而且还会遇到马上所有文本框就要选中完毕时某一个文本框没 ...

  6. php文本框的属性,在PHP中,为文本框设置“name”属性的方法是() 答案:为不同文本框表单元素分别设置不同的“name”属性值...

    因谓某零件者当力论,材之则当称RP0.600MPa二>,有四种材之则与刘性足曰,若只图则,何种材宜?.俟:RP0.二二1800MPa,A = 2% 以何项不属孙富谓杜十娘之恶意与言()耳:南归, ...

  7. java文本框默认格式化,XJL:Swing中的格式化文本框

    首先演示一个NumberFormatter的例子,在这个例子中要求用户输入一个数字,单击按钮后将用户输入的数字乘2以后重新赋值给输入框.用户输入的数字必须大于0,小于100. package com. ...

  8. excel插入html文本,带有标签的HTML文本,用于Excel单元格中的格式化文本

    你们都有有效的解决方案,而且只有少数几个你可以实现这个 . 工具需要的是正则表达式,linq,搜索引擎,vb.net或C#和互联网 . 搜索"html table to dataset&qu ...

  9. 防注入php 留言板代码,简单的 php 防注入代码

    简明现代魔法 -> PHP服务器脚本 -> 简单的 php 防注入代码 简单的 php 防注入代码 2010-04-10 介绍两种方法吧,首先请把以下代码保存为safe.php放在网站根目 ...

最新文章

  1. [Hive_add_8] Hive 常用参数配置
  2. redis transaction和connection命令操作
  3. JUC原子类-数组类型(三)
  4. 算法实现:返回单链表的倒数第pos个节点
  5. CCF201412-5 货物调度【费用流】(100分解题链接)
  6. Docker详解(十一)——Docker容器CPU资源限额实战
  7. C语言的 typedef 关键字
  8. 深度学习《InfoGAN模型》
  9. oracle知否有用coherence,Oracle Coherence概述
  10. 7-2 sdut-oop-5 计算长方体和四棱锥的表面积和体积(类的继承) (10 分)
  11. dns解析失败如何处理?
  12. Spring 事件发布机制@EventListener源码深度解析
  13. PhotoShop如何使用图层之实例演示?
  14. 医学数字成像设备中计算机系统的作用包括,《医学影像设备学》题 集
  15. 使用 Python 将 PDF 文件按页进行拆分
  16. 【AI_数学知识】概率论
  17. 关于Unity打不开弹出“由于找不到MSVCP140.dll,无法继续执行代码,重新安装程序可能会解决此问题”解决方案
  18. Ubuntu18.04+Nvidia RTX 3060+Pytorch配置GPU环境
  19. 软件测试的背景和前期准备
  20. 父类对象指向子类引用

热门文章

  1. 基于Linux IIO接口的波形采集
  2. c语言用十年算入门,初识C语言_十年饮冰 难凉热血的技术博客_51CTO博客
  3. python实现excel追加饼图
  4. ONES 万事联合创始人 \u0026 CTO 冯斌:企业服务产品的探索实践
  5. SpringBoot无法引入@RunWith注解解决方法
  6. 如何看计算机加密方式,电脑常见的几种加密的方法
  7. html完整语句,html语句
  8. 被社会毒打的20年毕业的后端
  9. 网红神盾七号重疾险再创新高,自带住院津贴,还能赔两次!
  10. 软件测试提交bug意思,软件测试bug定义及分类