PHP漏洞全解(四)-xss跨站腳本攻擊
XSS(Cross Site Scripting),意為跨網(wǎng)站腳本攻擊,為了和樣式表css(Cascading Style Sheet)區(qū)別,縮寫為XSS
跨站腳本主要被攻擊者利用來讀取網(wǎng)站用戶的cookies或者其他個人數(shù)據(jù),一旦攻擊者得到這些數(shù)據(jù),那么他就可以偽裝成此用戶來登錄網(wǎng)站,獲得此用戶的權限。
跨站腳本攻擊的一般步驟:
1、攻擊者以某種方式發(fā)送xss的http鏈接給目標用戶
2、目標用戶登錄此網(wǎng)站,在登陸期間打開了攻擊者發(fā)送的xss鏈接
3、網(wǎng)站執(zhí)行了此xss攻擊腳本
4、目標用戶頁面跳轉到攻擊者的網(wǎng)站,攻擊者取得了目標用戶的信息
5、攻擊者使用目標用戶的信息登錄網(wǎng)站,完成攻擊
當有存在跨站漏洞的程序出現(xiàn)的時候,攻擊者可以構造類似 http://www.sectop.com/search.php?key=> ,誘騙用戶點擊后,可以獲取用戶cookies值
防范方法:
利用htmlspecialchars函數(shù)將特殊字符轉換成HTML編碼
函數(shù)原型
string htmlspecialchars (string string, int quote_style, string charset)
string 是要編碼的字符串
quote_style 可選,值可為ENT_COMPAT、ENT_QUOTES、ENT_NOQUOTES,默認值ENT_COMPAT,表示只轉換雙引號不轉換單引號。ENT_QUOTES,表示雙引號和單引號都要轉換。ENT_NOQUOTES,表示雙引號和單引號都不轉換
charset 可選,表示使用的字符集
函數(shù)會將下列特殊字符轉換成html編碼:
& —-> &
" —-> "
‘ —-> ‘
< —-> <
> —-> >
$_SERVER["PHP_SELF"]變量的跨站
在某個表單中,如果提交參數(shù)給自己,會用這樣的語句
$_SERVER["PHP_SELF"]變量的值為當前頁面名稱
例:
get.php中上述的表單
那么我們提交
http://www.sectop.com/get.php/">>
那么表單變成





















