飘易博客(作者:Flymorn)
订阅《飘易博客》RSS,第一时间查看最新文章!
飘易首页 | 留言本 | 关于我 | 订阅Feed

HTML Purifier:PHP防止xss跨站攻击利器

Author:飘易 Source:飘易
Categories:PHP编程 PostTime:2014-8-30 16:39:29
正 文:
    随着html可视即可得编辑器的流行,很多网站使用了这样的编辑器,比如FCKEditor、百度UEditor编辑器等等。

    跨站脚本攻击(XSS)已经不是什么新鲜的话题了,甚至很多大公司也为此吃尽苦头。最简单直接的防范方法,就是不允许任何html标签输入,对用户输入进行编码(htmlencode)。

    但是如果想用户输入支持一些格式,怎么办?一种办法就是很多论坛采用的BB Code的方法。使用特定的标签代替一些格式。比如:[ B ]表示粗体,等等。但是,BB Code这种形式并不被广泛接受,它的表现力实在太差了,而且并不是标准格式

    为了让用户的输入更具表现力,涌现了大量的Html编辑器控件,著名的有FCKEditor,FreeTextBox,Rich TextBox,Cute Editor,TinyMCE等等。我个人比较喜欢Cute Editor,功能强大,性能不错,而且容易定制。

    使用这些Html编辑器控件的潜在危险,是用户可能会输入一些危险字符,注入到网站中,形成XSS攻击。一个最简单的输入就是:
<script>alert('xss')</script>

   XSS 输入攻击也可能是 HTML 代码段,譬如:
(1).网页不停地刷新 <meta http-equiv="refresh" content="0;"> 
(2).嵌入其它网站的链接 <iframe src=http://xxxx width=250 height=250></iframe> 

    对于PHP开发者来说,如何去防范XSS攻击呢?(php防止xss攻击的函数),这里飘易推荐HTML Purifier工具。

    HTML Purifier官网http://htmlpurifier.org/

    HTML Purifier是基于php 5所编写的HTML过滤器,支持自定义过滤规则,还可以把不标准的HTML转换为标准的HTML,是WYSIWYG编辑器的福音。
    HTML Purifier,这是一个符合W3C标准的HTML过滤器,可以生成标准的HTML代码,并且有很多的自定义配置,可以过滤掉javascript代码等,有效的防止XSS!

    一、使用HTML Purifier的要求 
HTML Purifier 只需要PHP 5.0.5以及以上版本,并且不需要其他核心组件的支持。HTML Purifier 不兼容  zend.ze1_compatibility_mode。

    以下5个是可选扩展,可以增强HTML Purifier的性能(can enhance the capabilities of HTML Purifier):

    * iconv  : Converts text to and from non-UTF-8 encodings
    * bcmath : Used for unit conversion and imagecrash protection
    * tidy   : Used for pretty-printing HTML
    * CSSTidy : Clean CSS stylesheets using %Core.ExtractStyleBlocks
    * Net_IDNA2 (PEAR) : IRI support using %Core.EnableIDNA

    使用前请阅读HTML Purifier详细安装说明:http://htmlpurifier.org/live/INSTALL

    二、基本用法 
默认下,使用UTF-8编码,和XHTML 1.0 Transitional文档类型. 
require_once('HTMLPurifier/library/HTMLPurifier.auto.php');
$config = HTMLPurifier_Config::createDefault();
$purifier = new HTMLPurifier($config);
  
$dirty_html = <<<EOF  
<h1>Hello  
<script>alert("world");</script>  
EOF;  

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

    输出: 
<h1>Hello  
</h1>  

    过滤了XSS代码,过滤规则:http://htmlpurifier.org/live/smoketests/xssAttacks.php
    自动填充了残缺的标签

    三、使用配置 
    配置主要用于设置规则,使用比较简单 

$config = HTMLPurifier_Config::createDefault();  
// something....  
$purifier = new HTMLPurifier($config);  

    详细的配置规则:http://htmlpurifier.org/live/configdoc/plain.html

【参考】:
使用HTML Purifier解决XSS问题
AntiXSS - 支持Html同时防止XSS攻击
作者:飘易
来源:飘易
版权所有。转载时必须以链接形式注明作者和原始出处及本声明。
上一篇:没有了
下一篇:Linux下iptables开放端口端示例
0条评论 “HTML Purifier:PHP防止xss跨站攻击利器”
No Comment .
发表评论
名称(*必填)
邮件(选填)
网站(选填)

记住我,下次回复时不用重新输入个人信息
© 2007-2019 飘易博客 Www.Piaoyi.Org 原创文章版权由飘易所有