時(shí)間:2015-06-28 00:00:00 來源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評論(0)
任何安全風(fēng)險(xiǎn)都需要我們在設(shè)計(jì)時(shí)就加以重視和避免。對于網(wǎng)站的建設(shè)來說更是這樣。大量的網(wǎng)站仍不能完全脫離HTML代碼,如何保障這種代碼輸入時(shí)的安全性和合法性是避免安全問題的關(guān)鍵步驟。今天筆者就與各位一起看一個(gè)可以幫助你防止不良代碼的好工具HTML Purifier,我們權(quán)且叫它HTML清潔器。
功能與特性
HTML Purifier可以幫助用戶保障HTML的合法性,它可以使你確認(rèn)HTML是否包含跨站腳本攻擊企圖或其它的惡意攻擊。通過該軟件你準(zhǔn)許用戶粘貼一些HTML內(nèi)容,卻不會讓其插入惡意代碼,而這種代碼可在查看這些HTML的任何人的瀏覽器中運(yùn)行。我們可以通過CodeIgniter、 Drupal、 MODx、 Phorum、 Joomla! 、WordPress等來使用該軟件。
HTML Purifier利用一個(gè)白名單列表來實(shí)現(xiàn)安全,要求一個(gè)合法文檔的所有部分都必須明確地獲得準(zhǔn)許,而不是象一個(gè)黑名單列表那樣查找已知的惡意HTML代碼。冒煙測試(smoke testing)頁明確地列示了有哪些東西被允許,其中還表明了相關(guān)的場合。HTML Purifier的一個(gè)重要目標(biāo)是它應(yīng)當(dāng)完全理解合法的HTML是什么樣的,哪些元素可被嵌套在其它元素中,對于一個(gè)特定元素的相關(guān)HTML屬性來說,哪些是合法的內(nèi)容。另外,該軟件還包括了對CSS的支持,與其它的HTML驗(yàn)證工具相比,該軟件有其自身的優(yōu)越性。
不過,用戶(就是你,呵呵)需要注意,并不存在Ubuntu、Fedora、openSUSE等Linux系統(tǒng)的HTML Purifier軟件包。該軟件可利用pear來安裝,而且安裝速度很快,這樣我們就可以使用pear的升級來輕易地升級到最新的版本。Pear使得將HTML Purifier包含到用戶的腳本中更加容易了,這是因?yàn)橛脩舨槐卦谄淠_本中指明任何路徑。
安裝與使用
要通過pear安裝HTML Purifier,用戶必須首先安裝php-pear軟件包,然后利用pear命令安裝HTML Purifier。下面的命令將把HTML Purifier安裝到/usr/share/pear/HTMLPurifier中。
pear?channel-discover?htmlpurifier.org pear?install?hp/HTMLPurifier |
對筆者而言,在此階段利用HTML Purifier會導(dǎo)致一個(gè)Apache的日志文件錯(cuò)誤,即關(guān)于Cache.SerializerPath路徑并不存在。該軟件會盡量將下面的目錄用作一個(gè)高速緩沖內(nèi)容的可寫入路徑:/usr/share/pear/HTMLPurifier/DefinitionCache/Serializer。這個(gè)高速緩沖存儲器可被關(guān)閉,這在INSTALL安裝中有詳細(xì)描述,否則你可在/usr中創(chuàng)建目錄,/usr正是 HTML Purifier 要用作一個(gè)內(nèi)容易丟失的緩存的位置。第三種選擇顯示在下面:
#?mkdir?-p?/var/cache/HTMLPurifier #?chown?apache?/var/cache/HTMLPurifier #?chmod?o-rwx?/var/cache/HTMLPurifier #?ls?-ld?/var/cache/HTMLPurifier drwxr-x---?2?apache?root?4096?2008-06-25?14:25?/var/cache/HTMLPurifier |
不幸的是,SerializerPath的默認(rèn)路徑被編碼后放在了HTMLPurifier/ConfigSchema/schema.ser中,這是一個(gè)長度定界的文件,不太容易編輯。最好的方案是使用PHP代碼中的一個(gè)配置對象來改變路徑,或采用更好的方法,即用戶的PHP函數(shù),它可以為網(wǎng)站建立配置對象。
下面是一個(gè)簡單的index.php文件,它使用了HTML Purifier來清理HTML內(nèi)容,由同樣的HTML網(wǎng)頁上的一個(gè)表單來提交。注意,對htmlspecialchars的調(diào)用并不是為了安全性,而僅僅是為了支持由用戶輸入的HTML文本,目的是為了在pre元素內(nèi)的完全可見。
#?cd?/var/www/html?#?mkdir?HTMLPurifierTest?#?chown?ben.apache HTMLPurifierTest?#?chmod?+s?HTMLPurifierTest?#?su?-l?ben?$?cd /var/www/html?$?vi?index.php?set('Core',?'Encoding',?'ISO-8859-1');?$config->set ('HTML',?'TidyLevel',?'heavy'?);?$config->set('Cache',?' SerializerPath',?'/var/cache/HTMLPurifier'?);?$?purifier?= new?HTMLPurifier($config);??>??Enter?your nastiest?HTML?below!?/p?>?>?/form> |
如果你希望明確地限制一個(gè)用戶可以輸入的HTML元素,可以使用ForbiddenElements配置指令,如下所示。本例將從所輸入的HTML元素中剝離出任何大寫的、斜體或預(yù)定格式的標(biāo)簽。你還可以采用另外一種方法,通過白名單利用AllowedElements明確地指明哪些元素是合法的。
$config->set('HTML',?'ForbiddenElements',?'b,i,pre'); |
HTML Purifier包括了對過濾和管理URI(統(tǒng)一資源標(biāo)識符)的支持,既可在主要的驗(yàn)證之前,也可在其后進(jìn)行。能夠在驗(yàn)證HTML輸入之前進(jìn)行過濾準(zhǔn)許用戶改變URI。
有一種URI過濾器稱為主機(jī)黑名單,它準(zhǔn)許你阻止給定的主機(jī)名。不過,你一定要小心使用主機(jī)黑名單,因?yàn)槟愕暮诿麊沃械娜魏螙|西一旦出現(xiàn)在URL(統(tǒng)一資源定位器)中,它都會被拒絕。幸運(yùn)的是,主機(jī)黑名單類的代碼是很短的,因此你能夠輕易地定義一個(gè)類,它只為以特定后綴結(jié)尾的URL進(jìn)行了測試。
小結(jié)
大概高速緩存目錄的安裝問題是一個(gè)PEAR的限制問題。至少讓HTML Purifier無法正常運(yùn)行同時(shí)又生成冗長的錯(cuò)誤消息會迫使我們注意在什么地方存放易丟失的緩存文檔的問題,而不僅僅是簡單地使用/usr下的一個(gè)路徑。
HTML Purifier為防止人們輸入錯(cuò)誤或惡意的HTML代碼起到了保護(hù)作用。能夠輸入白名單,又能夠與URI過濾功能結(jié)合使用,這就避免了一些用戶輸入非法數(shù)據(jù)的企圖。URI過濾是一個(gè)很好的功能,如果作為管理員的你準(zhǔn)許任何人匿名發(fā)帖子的話,它可有助于減少論壇的垃圾信息。例如,你可以強(qiáng)化這樣一種策略:在人們匿名發(fā)帖子時(shí),他們只能連接到你的網(wǎng)站,如果他們想鏈接到其它的網(wǎng)站,就需要注冊。
總之,HTML Purifier是個(gè)實(shí)用的工具,你不妨試試。
關(guān)鍵詞標(biāo)簽:惡意,代碼,HTML,一個(gè),
相關(guān)閱讀
熱門文章 發(fā)Rootkit.Ads.i 和Trojan.DL.Mach.c病毒如何清除 殺毒36計(jì)之手動清除PcShare木馬_PcShare木馬清除方法 注冊表被修改的原因及解決辦法 卡巴斯基2017/2016破解版_kaspersky卡巴斯基2015/2014/2013/2012/2011/2010激活碼/授權(quán)許可文件Key
人氣排行 卡巴斯基2017激活教程_卡巴斯基2017用授權(quán)文件KEY激活的方法(完美激活) 解決alexa.exe自動彈出網(wǎng)頁病毒 卡巴斯基2017破解版_Kaspersky卡巴斯基2017激活碼/授權(quán)許可文件Key comine.exe 病毒清除方法 ekrn.exe占用CPU 100%的解決方案 木馬下載者Trojan-Downloader.Win32.FakeFolder.c手工清除解決方案 發(fā)Rootkit.Ads.i 和Trojan.DL.Mach.c病毒如何清除 一招搞定幾萬種木馬----→ 注冊表權(quán)限設(shè)置