国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

PHP下使用富文本過濾器 HTML Purifier 防止xss跨站攻擊

2024-05-04 21:49:44
字體:
來源:轉載
供稿:網友

CMS為了文章編輯內容,都會在后臺集成在線編輯器,如FCKEditor等,但是這種很容易XSS跨站攻擊,以下我們來看一下使用 HTML Purifier 如何防止xss跨站攻擊.

隨著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):

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

使用前請閱讀HTML Purifier詳細安裝說明:http://htmlpurifier.org/live/INSTALL

二、基本用法

默認下,使用UTF-8編碼,和XHTML 1.0 Transitional文檔類型.

  1. require_once('HTMLPurifier/library/HTMLPurifier.auto.php'); 
  2. $config = HTMLPurifier_Config::createDefault(); 
  3. $purifier = new HTMLPurifier($config); 
  4. //開源軟件:Vevb.com 
  5. $dirty_html = <<<EOF   
  6. <h1>Hello   
  7. <script>alert("world");</script>   
  8. EOF;
  9. $cleanHtml = $purifier->purify($dirty_html);
  10. //輸出: 
  11. <h1>Hello   
  12. </h1>   

過濾了XSS代碼,過濾規則:http://htmlpurifier.org/live/smoketests/xssAttacks.php

自動填充了殘缺的標簽

三、使用配置 

配置主要用于設置規則,使用比較簡單.

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

詳細的配置規則:http://htmlpurifier.org/live/configdoc/plain.html

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 夏河县| 玉环县| 肥城市| 全州县| 新兴县| 普宁市| 乐山市| 镇康县| 新宁县| 房山区| 苏州市| 白银市| 正宁县| 防城港市| 龙川县| 丽江市| 鹤峰县| 东阳市| 承德市| 新宁县| 柞水县| 芷江| 凌云县| 苍山县| 玉溪市| 乌什县| 平潭县| 龙门县| 银川市| 噶尔县| 平山县| 宜良县| 丁青县| 合川市| 遂川县| 高邑县| 游戏| 大庆市| 平顶山市| 禄丰县| 渝中区|