2013-04-24 59 views
0

我正在一個網站上工作,該網站允許用戶使用編輯器輸入html格式的內容。如何過濾XSS,但仍允許基本格式化標記

但是,我擔心XSS注射。編輯器顯然使用JavaScript過濾客戶端的信息,但我幾乎不能相信這一點,因爲最好的做法是不信任客戶端。

我希望能夠到白名單中的某些標記,如:

<br> <img src=""> <p> <b> 

,但仍執行鍼對XSS攻擊輸入一個安全過濾器。

我考慮使用http://php.net/manual/en/function.strip-tags.php,但我注意到img標籤是XSS黑客最喜歡的標籤之一。

是否有可能做到這一點的功能?它會安全嗎?

+0

找到一個像樣的BB解析器類[可能是XSS的常見防禦方法是什麼?](http://stackoverflow.com/questions/3129899/what-are-the-common-defenses-against -xss) – Quentin 2013-04-24 13:47:12

+0

可能重複[什麼是用PHP清理用戶輸入的最佳方法?](http://stackoverflow.com/questions/129677/whats-the-best-method-for-sanitizing-user-input-with -php) – 2013-04-26 04:55:04

回答

3

使用HTMLPurifier

$config = HTMLPurifier_Config::createDefault(); 

// the tags and attributes you want to allow 
$config->set('HTML.Allowed', 'br,img[src],p,b'); 

$purifier = new HTMLPurifier($config); 

print $purifier->purify($inputHtml); 

另一種可能的解決方案是你的HTML載入DomDocument,刪除不需要的元素或屬性,並獲得更新的HTML

+0

謝謝你已經決定休息:) – 2013-04-24 13:57:04

相關問題