跨站腳本威脅(Cross Site Scripting) 安全威脅 Cross Site Script(XSS),跨站腳本威脅。攻擊者利用應(yīng)用程序的動(dòng)態(tài)展示數(shù)據(jù)功能,在 html 頁面里嵌入惡意代碼。當(dāng)用戶瀏覽該頁之時(shí),這些嵌入在 html 中的惡意代碼會(huì)被 執(zhí)行,用戶瀏覽器被攻擊者控制,從而達(dá)到攻擊者的特殊目的。輸出函數(shù)經(jīng)常使用:echo、print、printf、vprintf、 %=$test% 跨站腳本攻擊有以下三種攻擊形式: (1) 反射型跨站腳本攻擊 攻擊者會(huì)通過社會(huì)工程學(xué)手段,發(fā)送一個(gè) URL 連接給用戶打開,在用戶打開頁面的同時(shí),瀏覽器會(huì)執(zhí)行頁面中嵌入的惡意腳本。 (2) 存儲(chǔ)型跨站腳本攻擊 攻擊者利用 web 應(yīng)用程序提供的錄入或修改數(shù)據(jù)功能,將數(shù)據(jù)存儲(chǔ)到服務(wù)器或用戶cookie 中,當(dāng)其他用戶瀏覽展示該數(shù)據(jù)的頁面時(shí),瀏覽器會(huì)執(zhí)行頁面中嵌入的惡意腳本。所有瀏覽者都會(huì)受到攻擊。 (3) DOM 跨站攻擊
這幾種顯示方式,都可能導(dǎo)致用戶瀏覽器把“用戶可控?cái)?shù)據(jù)”當(dāng)成 JS/VBS 腳本執(zhí)行,或頁面元素被“用戶可控?cái)?shù)據(jù)”插入的頁面 HTML 代碼控制,從而造成攻擊。 解決方案 a) 在 HTML 中顯示“用戶可控?cái)?shù)據(jù)”前,應(yīng)該進(jìn)行 htmlescape 轉(zhuǎn)義。 復(fù)制代碼 代碼如下: htmlspecialchars($outputString,ENT_QUOTES);
進(jìn)行 html 轉(zhuǎn)義應(yīng)該按照以下列表進(jìn)行轉(zhuǎn)義: 復(fù)制代碼 代碼如下: