需求: 富文本框總數(shù)被惡意用戶輸入script標簽胡嘿,使得加載其它頁面,欺詐我的上帝(用戶), 簡單過濾script钳踊,又會使用embed衷敌、iframe等可以加載第三方頁面的有危害標簽。
問題: 有什么方法拓瞪,可以完善過濾掉用戶輸入的所有富文本內(nèi)容缴罗,只留下沒有危害的富文本內(nèi)容?
方案:
基礎知識:
富文本: ?就是一個框需要讓用戶可以輸入html一些標簽祭埂,以達到美化界面的功能面氓。
惡意標簽: 插入這些標簽,可以改變頁面原來的內(nèi)容蛆橡,還有可能控制整個頁面舌界。進而實現(xiàn)釣魚、掛馬或盜取數(shù)據(jù)等危害比較大的事情航罗。
解決方案: 就是設定一個標簽和屬性白名單(因為即使白名單的標簽img禀横,里面的屬性-onerror等也可能導致執(zhí)行javascript,也是非常危險). 對用戶輸入進行檢查粥血,只允許白名單中的標簽和屬性才能通過檢查柏锄,否則就拒絕用戶請求(對于惡意用戶不要提供友好的用戶體驗酿箭,以防止防御被繞過,比如過濾危險標簽 script趾娃,當用戶輸入sscriptcript時缭嫡,就會導致被繞過)
由于不同開發(fā)程序使用的不一樣,分開討論抬闷。
PHP-富文本過濾
百度一下 php富文本過濾妇蛀,很容易找到一個開源庫-HTMLPurifier。
測試過程:
1. 下載開源庫 官網(wǎng)地址:
http://htmlpurifier.org/ ?
? 測試時下載的最新版 4.9.1版本
2. 使用:
將下載htmlpurifier庫笤成,解壓到webroot目錄下评架,并且將文件夾重命名為-htmlpurifier,即
webroot/htmlpurifier/library/HTMLPurifier.includes.php.
新建一個測試頁面test.php,內(nèi)容如下:
居然不能貼代碼 差評