跨站指令碼攻擊(簡稱為xss)是指惡意攻擊者在web頁面中插入惡意j**ascript**(也可能包含html**),當使用者瀏覽網頁之時,嵌入其中web裡面的j**ascript**會被執行,從而達到惡意攻擊使用者的目的。
xss漏洞通常是通過輸出函式將j**ascript**輸出到html頁面中,通過使用者本地瀏覽器執行的,所以xss漏洞關鍵就是尋找引數未過濾的輸出函式。
xss跨站指令碼,是一種web安全漏洞,他並不像sql注入等攻擊手段攻擊服務端,本身對web伺服器沒有危害,攻擊的物件是客戶端,使用瀏覽器訪問這些惡意位址的網民。
網路釣魚,包括盜取各類使用者賬號
竊取使用者cookies資料,從而獲取使用者隱私資訊,或利用使用者身份進一步對**執行操作
劫持使用者(瀏覽器)會話,從而執行任意操作,例如進行非法轉賬、強制發表日誌、傳送電子郵件等
強制彈出廣告頁面、刷流量等
網頁掛馬
html是一種超文字標記語言,通過將一些字元特殊地對待來區別文字和標記,例如,小於符號(
當動態頁面中插入的內容含有這些特殊字元(如
所以,當這些特殊字元不能被動態頁面檢查或檢查出現失誤時,就將會產生xss漏洞。
xss 攻擊有兩大要素:
攻擊者提交惡意**。
瀏覽器執行惡意**。
後端和前端一起協作,終可防禦xss攻擊。
根據攻擊的**,xss 攻擊可分為儲存型、反射型和 dom 型三種。
4.1 儲存型xss攻擊
儲存型xss:持久化,**是儲存在伺服器中的。
案例:
4.2 反射性xss攻擊
如:把惡意**注入到正常的url之中,然後把帶有惡意指令碼的url通過郵件,朋友圈,或傳送到群,誘導使用者點選。當使用者被誘騙點選惡意鏈結,注入的**會傳到易受攻擊的**伺服器。伺服器端接收資料處理後,再把帶有惡意**的資料返回使用者的瀏覽器。
一般是使用alert來探測站點是否防禦,直接攻擊的使用src來引入自己的指令碼
http://localhost:1521/?from=bing
如:我們在訪問乙個鏈結的時候(這個url中就帶了引數(param=value...),如果服務端沒有對引數進行必要的校驗,直接根據這個請求的引數值構造不同的html返回,讓value出現在返回的html中(js,html某元素的內容或者屬性)並被瀏覽器解釋執行,就可能存在反射型xss漏洞。
4.3 dom型xss攻擊
什麼是dom:
dom就是乙個樹狀的模型,你可以編寫j**ascript**根據dom一層一層的節點,去遍歷/獲取/修改對應的節點,物件,值。
dom型xss:不依賴於伺服器端的資料,完全由客戶端瀏覽器執行。通過惡意指令碼,可以動態地檢查和修改頁面的dom結構與內容,而不依賴於伺服器端的資料,屬於前端j**ascript自身的安全漏洞。
參考:4.5 三者區別
反射型、儲存型、兩種惡意指令碼都會經過伺服器端然後返回給客戶端,相對dom型來說比較好檢測與防禦。
而dom型不用將惡意指令碼傳輸到伺服器在返回客戶端,這就是dom型和反射、儲存型的區別。
xss 存在的根本原因是,對url中的引數,對使用者輸入提交給web server的內容,沒有進行充分的過濾。
如果我們能夠在web程式中,對使用者提交的url中的引數,和提交的所有內容,進行充分的過濾,將所有的不合法的引數和輸入內容過濾掉,那麼就不會導致「在使用者的瀏覽器中執行攻擊者自己定製的指令碼」。
xss防禦的總體思路是:對輸入(和url引數)進行過濾,對輸出進行編碼。
然後對動態輸出到頁面的內容進行html編碼,使指令碼無法在瀏覽器中執行。雖然對輸入過濾可以被繞過,但是也還是會攔截很大一部分的xss攻擊。
跨站指令碼攻擊 XSS
跨站指令碼攻擊,cross site script,為了區別css,英文縮寫為xss xss攻擊,通常指hacker通過 html注入 篡改了網頁,插入惡意的指令碼,從而在使用者瀏覽網頁時,控制使用者瀏覽器的一種攻擊。xss根據效果的不同可以分為如下幾類 1.反射型xss 通過將使用者輸入的資料 反...
Xss跨站指令碼攻擊
1.內容 攻擊者在web網頁中插入惡意js 當使用者瀏覽該瀏覽器頁面的時候,嵌入web中的js 會被執行,從而受到惡意攻擊,這就是跨站指令碼攻擊。xss指令碼植入方式前台接收資料存入資料庫,在渲染頁面時從資料庫中讀取相應資訊 2 分類 1 反射性的xss 發出請求時,xss 出現在url中,作為輸入...
xss 跨站指令碼攻擊
這是乙個非常簡單的攻擊。兩個頁面如下 out.print request.getparameter content 如果攻擊者在輸入框裡面輸入以下內容 那麼就有以下結果 當然,使用者還可以輸入 不僅可以注入script,還可以直接注入html http localhost 8080 test myj...