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