使用HTML Purifier解決XSS問題

2021-08-30 05:40:58 字數 1472 閱讀 9426

在php裡解決xss最簡單的方法是使用htmlspecialchars轉義xml實體,但對於需要使用xml的時候就搏手無策了。之前一直使用乙個叫[url=的函式,該函式過濾得比較嚴格,很多html特性都過濾了,而且有bug,不修改**使用起來很不友好,修改了卻無法應對靈活的xss攻擊。

[url= purifier[/url]是基於php 5所編寫的html過濾器,支援自定義過濾規則,還可以把不標準的html轉換為標準的html,是wysiwyg編輯器的福音。。

[size=medium][b]一、使用html purifier的要求[/b][/size]

[list]

[*]php 5+

[*]iconv

[*]bcmath

[*]tidy

[/list][size=medium][b]二、基本用法[/b][/size]

預設下,使用utf-8編碼,和xhtml 1.0 transitional文件型別.

<?php

require_once 'library/htmlpurifier.includes.php';

$dirty_html = <$config->set('attr.idprefix', 'test_'); // 給所有id加上字首test_

$config->set('attr.idblacklist', array( // 設定黑名單,會過濾掉設定的id,如果設定了id字首,要把字首也加上

'test_black_list'

));$config->set('attr.idblacklistregexp', '/list_\d+/'); // 黑名單,使用正則匹配

輸入:

adf

adfadf

輸出:

adf

adfadf

[b]2.class規則[/b]

預設下,是允許所有的class。屬性attr.allowedclasses用於設定允許的class名,沒被設定的class將被拒絕使用。而attr.forbiddenclasses則用於設定拒絕使用的class名。

$config->set('attr.allowedclasses', array( // 設定允許使用的class名

'test_by_willko'

));$config->set('attr.forbiddenclasses', array( // 設定拒絕使用的class名

'ignore'

));

輸入:

12345

78900

輸出:

12345

[size=medium][b]四、html相關規則[/b][/size]

最近,身體不適,待續...

過濾XSS的HTMLPurifier使用

在php裡解決xss最簡單的方法是使用htmlspecialchars轉義xml實體,但對於需要使用xml的時候就搏手無策了。html purifier是基於php 5所編寫的html過濾器,支援自定義過濾規則,還可以把不標準的html轉換為標準的html,是wysiwyg編輯器的福音。requir...

PHP中 HTMLPurifier防XSS攻擊

htmlpurifier是我目前用過最好的php富文字html過濾器了,採用了白名單機制,有效杜絕了使用者提交表單中的非法html標籤,從而可以防止xss攻擊!配置方法記錄下來,以備工作中使用!param type string 要過濾的內容 return type description func...

Berkeley DB使用全解

在開發桌面級應用程式時,常常需要用到可持續儲存技術,做為儲存程式在退出之前所使用的資料,如變數,物件,視窗位置,大小.一般我們會使用office access這類桌面型檔案資料庫,或者是使用登錄檔.但是它們都有一些不盡人意的缺陷.比如 1.mdb檔案無法在沒有安裝office的系統上訪問,直少得需要...