在編程開發時安全問題是及其重要的,對於用戶提交的數據要進行過濾,XSS就是需要重視的一點,先說一下什么是XSS,簡單來說就是用戶提交數據(例如發 表評論,發表日志)時往Web頁面里插入惡意javascript代碼例如死循環,瘋狂的alert,這還不算還可能會修改頁面頁面上的html元素(例 如登錄表單的action),這樣當用戶瀏覽該頁之時,嵌入其中Web里面的代碼會被執行,從而達到用戶的特殊目的。
在使用PHP開發時,可以使用htmlspecialchars將用戶提交過來的數據轉換使之原樣顯示,但是這樣一來會造成一些弊端,比如用戶上傳的圖片 無法顯示,html標簽不會起作用,沒有任何樣式。解決方案就是可以使用UBB標簽或者自定義標簽來實現,要么就是自己寫正則去過濾,但是防不勝防,並且 這樣在處理起來有些繁瑣。下載重點介紹一個開源的HTMLPurifier,這是一個符合W3C標准的HTML過濾器,可以生成標准的HTML代碼,並且 有很多的自定義配置,我更關注的是可以過濾掉javascript代碼,有效的防止XSS!
閑話少說,放出簡單代碼示例和下載包:
- <?php
- //引入htmlPurifier去除XSS跨站攻擊代碼 生成安全的html代碼
- require_once('./htmlpurifier/library/HTMLPurifier.includes.php');
- $config = HTMLPurifier_Config::createDefault(); //創建默認配置
- $purifier = new HTMLPurifier($config); //實例化 並傳入默認配置 ($config為空也可)
- $safedata = $purifier->purify($_POST['content']); //開始過濾 返回過濾后的字符串
- echo '<pre>';
- print_r($safedata);
- ?>