XSS是一種常常出如今web應用中的計算機安全漏洞,它容許惡意web用戶將代碼植入到提供給其它用戶使用的頁面中。也屬一種注入攻擊,注入本質上就是把輸入的數據變成可執行的程序語句好比這些代碼包括HTML代碼和客戶端腳本。html
通常的瀏覽器與服務器交互都是,客戶端向服務器發送一條請求,類http://ww.bigshop.com/product/list/?q=手機
,也就是說客戶向目標站點發送了一條查詢全部手機的請求,而後服務器向客戶端返回相關數據,這是正常的。而且手機這一關鍵詞也會被從新返回給瀏覽器端的用戶,這就使得xss攻擊有隙可乘。黑客將http://ww.bigshop.com/product/list/?q=
這條包含惡意腳本的連接經過某種方式發送給用戶,那麼用戶一旦點擊這條連接,就會向目標站點發送查詢的請求,這固然是查詢不到任何結果,可是這段JavaScript的腳本就會從後臺轉了一圈又回到瀏覽器,這樣瀏覽器就會執行這段代碼,也就是是獲取用戶的cookie值。一旦黑客拿到你的cookie值,基本上就至關於能夠模擬你的身份。
能夠看到,攻擊者巧妙地經過反射型XSS的攻擊方式,達到了在受害者的瀏覽器上執行腳本的目的。因爲代碼注入的是一個動態產生的頁面而不是永久的頁面,所以這種攻擊方式只在點擊連接的時候才產生做用,這也是它被稱爲非持久型XSS的緣由。web
存儲型xss攻擊與反射型xss攻擊的區別在於,xss攻擊已經存儲在服務器的數據庫上,能夠長期的返回給瀏覽器端。例如當客戶A在博客園的博客或者評論區寫入一段js惡意腳本,這段腳本就會永久存儲到博客園的數據庫,一旦當有其餘用戶請求查看這條博客或者評論,博客園就會將相應的數據返回給用戶,固然這段js惡意腳本也會被返回給用戶的瀏覽器並執行。sql
不只服務器拿到用戶的請求進行過濾,在服務器將數據返回給瀏覽器後,瀏覽器也會再一次進行防禦。數據庫