bhpyg Thinkphp5 XSS攻擊防禦

2021-10-14 17:04:49 字數 2009 閱讀 3138

跨站指令碼攻擊(cross site scripting),攻擊者往web頁面裡插入惡意script**,當使用者瀏覽該頁之時,嵌入其中web裡面的script**會被執行,從而達到惡意攻擊使用者的目的。

模擬過程:

新增功能中,請求引數值包含script標籤js**

新增成功之後,資料表中:

訪問新增的這條資料,js**會被瀏覽器解析並執行。

xss攻擊嚴重影響了正常使用者對**的訪問。

轉化的思想:將輸入內容中的<>轉化為html實體字元。

原生php中對xss攻擊進行防範,使用htmlspecialchars函式,將使用者輸入的字串中的特殊字元,比如<> 轉化為html實體字元。

tp框架中,可以設定在獲取輸入變數時,使用htmlspecialchars函式對輸入進行處理。

注意:在框架配置檔案中,配置的函式名稱,如果寫錯,頁面不會報錯,只是所有接收的資料都是null.

'default_filter'

=>

'htmlspecialchars'

,

刪除之前模擬過程中新增的資料,重新進行模擬。

以新增商品分類為例(注意控制器中的對字段長度的限制)

[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-sehyutgi-1610609856715)(img/1563522924032.png)]

資料表中:

特殊字元<> 已經被轉化為html實體字元。

展示剛新增的資料,js被原封不動展示,不會執行。

[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-chy5dyip-1610609856719)(img/1563522977044.png)]

過濾的思想:將輸入內容中的script標籤js**過濾掉。

特別在富文字編輯器中,輸入的內容源**中,包含html標籤是正常的。不能使用htmlspecialchars進行處理。如果使用者直接在源**介面輸入js**,也會引起xss攻擊。

通常使用htmlpurifier外掛程式進行過濾。

使用步驟:

①使用composer執行命令,安裝 ezyang/htmlpurifier 擴充套件類庫

專案目錄下》 composer require ezyang/htmlpurifier

或者將htmlpurifier外掛程式包解壓,將其中的library目錄移動到專案中public/plugins目錄,改名為htmlpurifier

if(!

function_exists

('remove_xss'))

}

說明:htmlpurifier外掛程式,會過濾掉script標籤以及標籤包含的js**。

設定全域性過濾方法為封裝的remove_xss函式:

'default_filter'

=>

'remove_xss'

,

重新測試,輸入的內容中的script標籤被過濾。

[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-k09tkabo-1610609856722)(img/1563523754769.png)]

普通輸入內容,使用轉化的思想進行處理。

設定全域性過濾方法為封裝的htmlspecialchars函式:

'default_filter'

=>

'htmlspecialchars'

,

富文字編輯器內容,使用過濾的思想進行處理。

比如商品描述字段,處理如下:

//商品新增或修改功能中

$params

=input()

;//單獨處理商品描述字段 goods_introduce

$params

['goods_desc']=

input

('goods_desc',''

,'remove_xss'

);

5X5矩陣調換!

將乙個5x5矩陣中最大的元素放在中心,4個角分別放4個最小的元素,寫一函式實現之!include int main printf n return 0 void change int p temp p 12 p 12 pmax pmax temp temp p p pmin pmin temp pm...

Rhel5 x和CentOS5 x核心優化詳細解析

主要是針對 etc sysctl.conf裡的各項進行詳細解析,所有內容經網路蒐集並整理,方便大家學習了解。系統優化項 kernel.sysrq 0 使用sysrq組合鍵是了解系統目前運 況,為安全起見設為0關閉 kernel.core uses pid 1 控制core檔案的檔名是否新增pid作為...

Rhel5 x和CentOS5 x核心優化詳細解析

主要是針對 etc sysctl.conf裡的各項進行詳細解析,所有內容經網路蒐集並整理,方便大家學習了解。系統優化項 kernel.sysrq 0 使用sysrq組合鍵是了解系統目前運 況,為安全起見設為0關閉 kernel.core uses pid 1 控制core檔案的檔名是否新增pid作為...