XSS攻擊(Cross Site Scripting)中文名爲跨站腳本攻擊,XSS攻擊
時web中一種常見的漏洞
。經過XSS漏洞能夠僞造目標用戶登陸
,從而獲取登陸後的帳號操做。javascript
web網頁中在用戶登陸的時候,經過表單把用戶輸入的帳號密碼進行後臺數據庫的驗證,驗證經過後利用session會話進行用戶登陸後的判別是否登陸,在session的這個過程當中服務器會在服務器中寫入一個文件並記錄sessionid
,而後也會在瀏覽器中設置cookie
,保存sessionid
,服務器和客戶端之間利用這個sessionid
進行通訊識別。若是客戶端發送sessionid
給服務器服務器沒有找到,則說明服務器中的這個文件已通過期刪除了。那用戶這邊就須要從新登陸了。php
思路:經過獲取目標用戶登陸後的sessionid
,保存到本身的電腦,而後在本身的電腦上設置獲取到的sessionid
進行帳號登陸後的操做。經過sessionid僞造請求登陸
,直接跳過帳號密碼登陸操做就能進去。html
好比:java
給目標用戶發送一個有吸引力的郵件,郵箱中包含一個連接,當用戶點擊連接跳轉到一個僞造的頁面,這個僞造的頁面中包含了獲取目標用戶瀏覽器中cookie的javascript代碼
,獲取到cookie中的sessionid
後再傳送到攻擊者的服務器中;或者在站點中的可插入數據的地方進行在html中寫行內的javascript代碼執行操做(< IMG SRC="jav ascript:alert('XSS');" >;);還能夠當在一個公共wifi環境下,進行可帳號登陸操做,wifi路由器的管理員能夠經過抓包工具抓包直接抓包查看到你的sessionid,因此不要在公共wifi下進行敏感操做,是很不安全的。web
你們都知道,當咱們去郵箱或者論壇登錄後,服務器會寫一些cookie到咱們的瀏覽器,當下次再訪問其餘頁面時,因爲瀏覽器回自動傳遞cookie,這樣 就實現了一次登錄就能夠看到全部須要登錄後才能看到的內容。也就是說,實質上,全部的登錄狀態這些都是創建在cookie上的!假設咱們登錄後的 cookie被人得到,那就會有暴露我的信息的危險!固然,想一想,其餘人怎麼能夠得到客戶的cookie?那必然是有不懷好意的人的程序在瀏覽器裏運行! 若是是如今滿天飛的流氓軟件,那沒有辦法,httponly也不是用來解決這種狀況的,它是用來解決瀏覽器裏javascript訪問cookie的問 題。試想,一個flash程序在你的瀏覽器裏運行,就能夠得到你的cookie的!
IE6的SP1裏就帶了對httponly的支持,因此相對還說仍是些安全性。數據庫
PHP中的設置
PHP5.2以上版本已支持HttpOnly參數的設置,一樣也支持全局的HttpOnly的設置,在php.ini中
-----------------------------------------------------
session.cookie_httponly =
-----------------------------------------------------
設置其值爲1或者TRUE,來開啓全局的Cookie的HttpOnly屬性,固然也支持在代碼中來開啓:
-----------------------------------------------------
<?php
ini_set("session.cookie_httponly", 1);
// or
session_set_cookie_params(0, NULL, NULL, NULL, TRUE);
?>
-----------------------------------------------------
Cookie操做函數setcookie函數和setrawcookie函數也專門添加了第7個參數來作爲HttpOnly的選項,開啓方法爲:
-------------------------------------------------------
setcookie("abc", "test", NULL, NULL, NULL, NULL, TRUE);
setrawcookie("abc", "test", NULL, NULL, NULL, NULL, TRUE);
-------------------------------------------------------
對於PHP5.1之前版本以及PHP4版本的話,則須要經過header函數來變通下了:
-------------------------------------------------------------
<?php
header("Set-Cookie: hidden=value; httpOnly");
?>
-------------------------------------------------------------