跨站指令碼攻擊(cross site scripting),攻擊者往web頁面裡插入惡意script**,當使用者瀏覽該頁之時,嵌入其中web裡面的script**會被執行,從而達到惡意攻擊使用者的目的。
模擬過程:
新增功能中,請求引數值包含script標籤js**
新增成功之後,資料表中:
訪問新增的這條資料,js**會被瀏覽器解析並執行。
xss攻擊嚴重影響了正常使用者對**的訪問。
轉化的思想:將輸入內容中的<>轉化為html實體字元。
原生php中對xss攻擊進行防範,使用htmlspecialchars函式,將使用者輸入的字串中的特殊字元,比如<> 轉化為html實體字元。
tp框架中,可以設定在獲取輸入變數時,使用htmlspecialchars函式對輸入進行處理。
注意:在框架配置檔案中,配置的函式名稱,如果寫錯,頁面不會報錯,只是所有接收的資料都是null.
'default_filter' => 'htmlspecialchars'
刪除之前模擬過程中新增的資料,重新進行模擬。
以新增商品分類為例(注意控制器中的對字段長度的限制)
特殊字元<> 已經被轉化為html實體字元。
展示剛新增的資料,js被原封不動展示,不會執行。
過濾的思想:將輸入內容中的script標籤js**過濾掉。
特別在富文字編輯器中,輸入的內容源**中,包含html標籤是正常的。不能使用htmlspecialchars進行處理。如果使用者直接在源**介面輸入js**,也會引起xss攻擊。
通常使用htmlpurifier外掛程式進行過濾。
使用步驟:
①使用composer執行命令,安裝 ezyang/htmlpurifier 擴充套件類庫
專案目錄下》 composer require ezyang/htmlpurifier
或者
if (!function_exists('remove_xss'))
}
說明:htmlpurifier外掛程式,會過濾掉script標籤以及標籤包含的js**。
設定全域性過濾方法為封裝的remove_xss函式:
'default_filter' => 'remove_xss',
重新測試,輸入的內容中的script標籤被過濾。普通輸入內容,使用轉化的思想進行處理。
設定全域性過濾方法為封裝的htmlspecialchars函式:
'default_filter' => 'htmlspecialchars',
富文字編輯器內容,使用過濾的思想進行處理。
比如商品描述字段,處理如下
//商品新增或修改功能中
$params = input();
//單獨處理商品描述字段 goods_introduce
$params['goods_desc'] = input('goods_desc', '', 'remove_xss');
php對xss攻擊的防範
xss cross site script 跨指令碼攻擊 xss攻擊本質 通過標籤 一對尖括號 來達到攻擊的目的,所以我們只需要將尖括號 進行 轉義,這就是php中提到的實體轉義。htmlspecialchars函式和htmlentites函式 所有表單輸入的地方,都需要實體轉義,以下為轉義函式 f...
ThinkPHP防範XSS跨站攻擊
有人在烏雲向我提交了thinkphp xss攻擊的bug,抽時間看了一下。原理是通過url傳入script標籤,thinkphp異常錯誤 頁面直接輸出了script。原理 其中m的值是乙個不存在的module,同時是乙個完全的script,在異常錯誤頁面中被執行實現xss跨站攻擊。防範方法 找到異常...
web安全防範之XSS漏洞攻擊
原文出處 url 這篇部落格也不錯 url 通常會遇到的攻擊 攻擊方法也很多 原理 向網頁內注入可執行 從而達到入侵目的。危害 破壞頁面結構,導致頁面顯示問題 更嚴重的會盜取當前使用者的cookie,導致你的賬號被盜等 function escape html t n n t n 0 g var s...