HTML Purifier – 輕鬆阻擋 XSS 攻擊

9 / 20, 2014 PHP , 網路安全

之前遇到一個專案,要允許使用者插入 <img> <table> <br> 等等 HTML Tag,但是又不能讓使用者放 Javascript ,到底該怎麼防護讓我傷透腦筋,直到被Orange大大推薦,才知道有個工具叫做 “HTML Purifier”,可以輕鬆擋住大部分的XSS攻擊,除了常見的<script>攻擊以外,連 onclick 這種event攻擊甚至 javascript:alert() 偽協議攻擊都可以阻擋,而且只要幾句話就好!

官網:http://htmlpurifier.org/

把他下載下來之後,解壓縮並把其中的 “library”資料夾拉出來,其餘的不用理他,接著引入 HTMLPurifier.auto.php 並在要過濾的檔案放入以下Code,然後使用 xss_filter($content) 即可

以上Code如果去過濾這面這段程式碼,結果如下:

但是這樣只有過濾掉JS部分,如果我想要指定只能使用哪些Tag,則必須用比較複雜的方式

HTML Purifier還有非常多功能,像是可以限制字型字體,阻擋可能有威脅的CSS(如display:none)等等,功能太多了不可能在這裡說完,所體詳細資料請見此:
http://htmlpurifier.org/live/configdoc/plain.html