php防範XSS攻擊

2022-06-24 18:03:10 字數 1667 閱讀 4521

跨站指令碼攻擊(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...