常見漏洞防護(一) xss漏洞

2022-09-03 21:12:12 字數 1576 閱讀 6885

筆者能力有限,本篇只介紹了簡單的php方面的xss防護

基於白名單時,設定允許存在的標籤,不存在白名單的直接返回,例如wordpress -> wp-include -> kses.php檔案中,對每個標籤的屬性進行過濾

基於黑名單時,不太安全,畢竟自己不知道的知識點太多,過濾起來可能不全面,,例如利用str_place()、preg_replace()過濾時,會有漏掉的標籤,比如下面這樣,只過濾了標籤,用其他姿勢輕鬆繞過

$name = str_replace('','',$_get['a']);

echo $name;

?>

轉義主要用到htmlspecialchars函式和htmlentities函式

htmlspecialchars() 函式把預定義的字元轉換為 html 實體。

預定義的字元是:

& (和號)成為 &

" (雙引號)成為 "

' (單引號)成為 '

< (小於)成為 <

> (大於)成為 >

w3cschool講解

htmlentities(string,flags,character-set,double_encode)

當flag欄位為不同的值時,

可選。規定如何處理引號、無效的編碼以及使用哪種文件型別。

可用的引號型別:

ent_compat - 預設。僅編碼雙引號。

ent_quotes - 編碼雙引號和單引號。

ent_noquotes - 不編碼任何引號。

無效的編碼:

ent_ignore - 忽略無效的編碼,而不是讓函式返回乙個空的字串。應盡量避免,因為這可能對安全性有影響。

ent_substitute - 把無效的編碼替代成乙個指定的帶有 unicode 替代字元 u+fffd(utf-8)或者 fffd; 的字元,而不是返回乙個空的字串。

ent_disallowed - 把指定文件型別中的無效**點替代成 unicode 替代字元 u+fffd(utf-8)或者 fffd;。

規定使用的文件型別的附加 flags:

ent_html401 - 預設。作為 html 4.01 處理**。

ent_html5 - 作為 html 5 處理**。

ent_xml1 - 作為 xml 1 處理**。

ent_xhtml - 作為 xhtml 處理**。

w3cschool講解

htmlentities轉換所有的html標記,htmlspecialchars只轉義& 、』、 「、 這幾個特殊符號。使用htmlentities不指定編碼的話遇到中文會亂碼。

XSS漏洞解析 一

以前寫程式沒有怎麼關注這些網路安全問題,隨著自己寫的程式越來越多,開始關注了網路安全了。一 什麼是xss xss cross site scripting 跨站指令碼是一種經常出現在web應用程式的計算機安全漏洞,通常是程式過濾不足造成的 二 xss攻擊方式以及表現形式 xss攻擊方式分為兩種。一種...

XSS漏洞解析 一

以前寫程式沒有怎麼關注這些網路安全問題,隨著自己寫的程式越來越多,開始關注了網路安全了。一 什麼是xss xss cross site scripting 跨站指令碼是一種經常出現在web應用程式的計算機安全漏洞,通常是程式過濾不足造成的 二 xss攻擊方式以及表現形式 xss攻擊方式分為兩種。一種...

xss漏洞之 漏洞利用

原理 網頁被植入網頁被植入xss指令碼,普通使用者訪問此網頁時,會自動將使用者本地的cookie快取傳送到指定遠端伺服器 利用 1 首先登陸乙個頁面,抓包獲取cookie 2 複製此頁面裡任一選項的url,重啟瀏覽器後直接訪問此url,抓包修改cookie為上面獲取的登陸成功後的cookie 3 頁...