當前位置:首頁 » 網頁前端 » xss跨域腳本攻擊dom型
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

xss跨域腳本攻擊dom型

發布時間: 2022-02-10 04:51:47

① 如何防範XSS跨站腳本攻擊測試篇

不可信數據 不可信數據通常是來自HTTP請求的數據,以URL參數、表單欄位、標頭或者Cookie的形式。不過從安全形度來看,來自資料庫、網路伺服器和其他來源的數據往往也是不可信的,也就是說,這些數據可能沒有完全通過驗證。 應該始終對不可信數據保持警惕,將其視為包含攻擊,這意味著在發送不可信數據之前,應該採取措施確定沒有攻擊再發送。由於應用程序之間的關聯不斷深化,下游直譯程序執行的攻擊可以迅速蔓延。 傳統上來看,輸入驗證是處理不可信數據的最好辦法,然而,輸入驗證法並不是注入式攻擊的最佳解決方案。首先,輸入驗證通常是在獲取數據時開始執行的,而此時並不知道目的地所在。這也意味著我們並不知道在目標直譯程序中哪些字元是重要的。其次,可能更加重要的是,應用程序必須允許潛在危害的字元進入,例如,是不是僅僅因為SQL認為Mr. O'Malley名字包含特殊字元他就不能在資料庫中注冊呢? 雖然輸入驗證很重要,但這始終不是解決注入攻擊的完整解決方案,最好將輸入攻擊作為縱深防禦措施,而將escaping作為首要防線。 解碼(又稱為Output Encoding) 「Escaping」解碼技術主要用於確保字元作為數據處理,而不是作為與直譯程序的解析器相關的字元。有很多不同類型的解碼,有時候也被成為輸出「解碼」。有些技術定義特殊的「escape」字元,而其他技術則包含涉及若干字元的更復雜的語法。 不要將輸出解碼與Unicode字元編碼的概念弄混淆了,後者涉及映射Unicode字元到位序列。這種級別的編碼通常是自動解碼,並不能緩解攻擊。但是,如果沒有正確理解伺服器和瀏覽器間的目標字元集,有可能導致與非目標字元產生通信,從而招致跨站XSS腳本攻擊。這也正是為所有通信指定Unicode字元編碼(字元集)(如UTF-8等)的重要所在。 Escaping是重要的工具,能夠確保不可信數據不能被用來傳遞注入攻擊。這樣做並不會對解碼數據造成影響,仍將正確呈現在瀏覽器中,解碼只能阻止運行中發生的攻擊。 注入攻擊理論 注入攻擊是這樣一種攻擊方式,它主要涉及破壞數據結構並通過使用特殊字元(直譯程序正在使用的重要數據)轉換為代碼結構。XSS是一種注入攻擊形式,瀏覽器作為直譯程序,攻擊被隱藏在HTML文件中。HTML一直都是代碼和數據最差的mashup,因為HTML有很多可能的地方放置代碼以及很多不同的有效編碼。HTML是很復雜的,因為它不僅是層次結構的,而且還包含很多不同的解析器(XML、HTML、JavaScript、VBScript、CSS、URL等)。 要想真正明白注入攻擊與XSS的關系,必須認真考慮HTML DOM的層次結構中的注入攻擊。在HTML文件的某個位置(即開發者允許不可信數據列入DOM的位置)插入數據,主要有兩種注入代碼的方式: Injecting UP,上行注入 最常見的方式是關閉現有的context並開始一個新的代碼context,例如,當你關閉HTML屬性時使用">並開始新的 可以終止腳本塊,即使該腳本塊被注入腳本內方法調用內的引用字元,這是因為HTML解析器在JavaScript解析器之前運行。 Injecting DOWN,下行注入 另一種不太常見的執行XSS注入的方式就是,在不關閉當前context的情況下,引入一個subcontext。例如,將改為 ,並不需要躲開HTML屬性context,相反只需要引入允許在src屬性內寫腳本的context即可。另一個例子就是CSS屬性中的expression()功能,雖然你可能無法躲開引用CSS屬性來進行上行注入,你可以採用x ss:expression(document.write(document.cookie))且無需離開現有context。 同樣也有可能直接在現有context內進行注入,例如,可以採用不可信的輸入並把它直接放入JavaScript context。這種方式比你想像的更加常用,但是根本不可能利用escaping(或者任何其他方式)保障安全。從本質上講,如果這樣做,你的應用程序只會成為攻擊者將惡意代碼植入瀏覽器的渠道。 本文介紹的規則旨在防止上行和下行XSS注入攻擊。防止上行注入攻擊,你必須避免那些允許你關閉現有context開始新context的字元;而防止攻擊跳躍DOM層次級別,你必須避免所有可能關閉context的字元;下行注入攻擊,你必須避免任何可以用來在現有context內引入新的sub-context的字元。 積極XSS防禦模式 本文把HTML頁面當作一個模板,模板上有很多插槽,開發者允許在這些插槽處放置不可信數據。在其他地方放置不可信數據是不允許的,這是「白名單」模式,否認所有不允許的事情。 根據瀏覽器解析HTML的方式的不同,每種不同類型的插槽都有不同的安全規則。當你在這些插槽處放置不可信數據時,必須採取某些措施以確保數據不會「逃離」相應插槽並闖入允許代碼執行的context。從某種意義上說,這種方法將HTML文檔當作參數化的資料庫查詢,數據被保存在具體文職並與escaping代碼context相分離。 本文列出了最常見的插槽位置和安全放置數據的規則,基於各種不同的要求、已知的XSS載體和對流行瀏覽器的大量手動測試,我們保證本文提出的規則都是安全的。 定義好插槽位置,開發者們在放置任何數據前,都應該仔細分析以確保安全性。瀏覽器解析是非常棘手的,因為很多看起來無關緊要的字元可能起著重要作用。 為什麼不能對所有不可信數據進行HTML實體編碼? 可以對放入HTML文檔正文的不可行數據進行HTML實體編碼,如 標簽內。也可以對進入屬性的不可行數據進行實體編碼,尤其是當屬性中使用引用符號時。但是HTML實體編碼並不總是有效,例如將不可信數據放入 directlyinascript insideanHTMLcomment inanattributename <...NEVERPUTUNTRUSTEDDATAHERE...href="/test"/> inatagname 更重要的是,不要接受來自不可信任來源的JavaScript代碼然後運行,例如,名為「callback」的參數就包含JavaScript代碼段,沒有解碼能夠解決。 No.2 – 在向HTML元素內容插入不可信數據前對HTML解碼 這條規則適用於當你想把不可信數據直接插入HTML正文某處時,這包括內部正常標簽(div、p、b、td等)。大多數網站框架都有HTML解碼的方法且能夠躲開下列字元。但是,這對於其他HTML context是遠遠不夠的,你需要部署其他規則。 ...... ...... 以及其他的HTML常用元素 使用HTML實體解碼躲開下列字元以避免切換到任何執行內容,如腳本、樣式或者事件處理程序。在這種規格中推薦使用十六進制實體,除了XML中5個重要字元(&、<、 >、 "、 ')外,還加入了斜線符,以幫助結束HTML實體。 &-->& <-->< >-->> "-->" '-->''isnotrecommended /-->/ ESAPI參考實施 Stringsafe=ESAPI.encoder().encodeForHTML(request.getParameter("input")); No.3 – 在向HTML常見屬性插入不可信數據前進行屬性解碼 這條規則是將不可信數據轉化為典型屬性值(如寬度、名稱、值等),這不能用於復雜屬性(如href、src、style或者其他事件處理程序)。這是及其重要的規則,事件處理器屬性(為HTML JavaScript Data Values)必須遵守該規則。 content insidesinglequotedattribute 除了字母數字字元外,使用小於256的ASCII值&#xHH格式(或者命名的實體)對所有數據進行解碼以防止切換屬性。這條規則應用廣泛的原因是因為開發者常常讓屬性保持未引用,正確引用的屬性只能使用相應的引用進行解碼。未引用屬性可以被很多字元破壞,包括[space] % * + , - / ; < = > ^ 和 |。 ESAPI參考實施 String safe = ESAPI.encoder().encodeForHTMLAttribute( request.getParameter( "input" ) ); No.4 – 在向HTML JavaScript Data Values插入不可信數據前,進行JavaScript解碼 這條規則涉及在不同HTML元素上制定的JavaScript事件處理器。向這些事件處理器放置不可信數據的唯一安全位置就是「data value」。在這些小代碼塊放置不可信數據是相當危險的,因為很容易切換到執行環境,因此請小心使用。

② XSS跨站腳本攻擊的防禦方法有哪些怎樣把他們分類

用護衛神高級安全防護可以解決

③ DOM 跨站腳本攻擊問題,怎麼解決

跨站腳本攻擊(Cross Site Scripting)是指攻擊者利用網站程序對用戶輸入過濾不足,輸入可以顯示在頁面上對其他用戶造成影響的HTML代碼,從而盜取用戶資料、利用用戶身份進行某種動作或者對訪問者進行病毒侵害的一種攻擊方式。為了與層疊樣式表(Cascading Style Sheets)的縮寫CSS區分開,跨站腳本攻擊通常簡寫為XSS。
下面這個頁面的主要作用是獲取用戶輸入的參數作為用戶名,並在頁面中顯示「歡迎您,XXX」的形式,具體代碼如下:
<?php
$username = $_GET["name"];
echo "<p>歡迎您, ".$username."!</p>";

④ 跨站腳本攻擊有哪些類型

1、持久型跨站:最直接的危害類型,跨站代碼存儲在伺服器(資料庫)。

2、非持久型跨站:反射型跨站腳本漏洞,最普遍的類型。用戶訪問伺服器-跨站鏈接-返回跨站代碼。

3、DOM跨站(DOM XSS):DOM(document object model文檔對象模型),客戶端腳本處理邏輯導致的安全問題。

(4)xss跨域腳本攻擊dom型擴展閱讀:

跨站腳本攻擊產生的原因是網站過於相信用戶的輸入,那麼解決的辦法也很直接,就是從根本上不相信用戶的任何輸入。一個安全的網站應當對任何用戶的任何輸入都要進行檢查,特別是對用戶提交到伺服器中保存的數據,更要做篩選。

這種攻擊與反射型攻擊不同的是,它會把自己的攻擊代碼保存在網站的伺服器上,這樣,任何訪問了這個頁面的用戶,都會受到這個攻擊。

⑤ 跨站腳本攻擊(XSS)<script>alert(42873)</script>

網站防SQL注入的代碼有吧?
類似這樣的code_string="',;,and,exec,insert,select,count,*,chr,asc,master,truncate,char,declare,net user,xp_cmdshell,/add,drop,from"
在代碼里邊再加幾個:,%20,<,>我就是這么解決的

⑥ 下面這段代碼總是檢測到XSS跨站腳本攻擊漏洞找高手求解

是否有漏洞,取決於你輸出的內容是否可信
比如echo $rows["Author"];
如$rows["Author"]裡面是由用戶輸入且入庫未過濾,那麼直接輸出時存在xss漏洞的。
如$rows["Author"]輸入的值為〈script〉 alert( 1 )〈/script 〉
那麼直接輸出存在漏洞,
簡單點修改 echo htmlentities($rows["Author"]),其他echo的類似
如果輸出內容可信(過濾過,或來源可信安全)那麼直接輸出也不存在問題,程序檢測的未必准確。

入庫過濾了或者本身內容來源可靠不存在此漏洞。

⑦ xss攻擊類型包括那些

從攻擊代碼的工作方式可以分為三個類型:
(1)持久型跨站:最直接的危害類型,跨站代碼存儲在伺服器(資料庫)。
(2)非持久型跨站:反射型跨站腳本漏洞,最普遍的類型。用戶訪問伺服器-跨站鏈接-返回跨站代碼。
(3)DOM跨站(DOM XSS):DOM(document object model文檔對象模型),客戶端腳本處理邏輯導致的安全問題。
基於DOM的XSS漏洞是指受害者端的網頁腳本在修改本地頁面DOM環境時未進行合理的處置,而使得攻擊腳本被執行。在整個攻擊過程中,伺服器響應的頁面並沒有發生變化,引起客戶端腳本執行結果差異的原因是對本地DOM的惡意篡改利用。
常用的XSS攻擊手段和目的有:
1、盜用cookie,獲取敏感信息。
2、利用植入Flash,通過crossdomain許可權設置進一步獲取更高許可權;或者利用Java等得到類似的操作。
3、利用iframe、frame、XMLHttpRequest或上述Flash等方式,以用戶的身份執行一些管理動作,或執行一些一般的如發微博、加好友、發私信等操作。
4、利用可被攻擊的域受到其他域信任的特點,以受信任來源的身份請求一些平時不允許的操作,如進行不當的投票活動。
5、在訪問量極大的一些頁面上的XSS可以攻擊一些小型網站,實現DDos攻擊的效果。

⑧ 【web安全】xss跨站腳本攻擊有哪些

xss攻擊可以分成兩種類型:
1.非持久型攻擊
2.持久型攻擊
非持久型xss攻擊:顧名思義,非持久型xss攻擊是一次性的,僅對當次的頁面訪問產生影響。非持久型xss攻擊要求用戶訪問一個被攻擊者篡改後的鏈接,用戶訪問該鏈接時,被植入的攻擊腳本被用戶游覽器執行,從而達到攻擊目的。
持久型xss攻擊:持久型xss,會把攻擊者的數據存儲在伺服器端,攻擊行為將伴隨著攻擊數據一直存在。
也可以分成三類:
反射型:經過後端,不經過資料庫
存儲型:經過後端,經過資料庫
DOM:不經過後端,DOM—based XSS漏洞是基於文檔對象模型Document Objeet Model,DOM)的一種漏洞,dom - xss是通過url傳入參數去控制觸發的。

⑨ XSS攻擊的定義,類型以及防禦方法

XXS攻擊全稱跨站腳本攻擊,是一種在Web應用中的計算機安全漏洞,它允許惡意Web用戶將代碼植入到提供給其他使用的頁面中。

XSS攻擊有哪幾種類型?下面就由銳速雲的小編為大家介紹一下

經常見到XSS攻擊有三種:反射XSS攻擊、DOM-based型XSS攻擊以及儲存型XSS攻擊。

[if !supportLists]1、[endif]反射型XSS攻擊

反射性XSS一般是攻擊者通過特定手法(如電子郵件),誘使用戶去訪問一個包含惡意代碼的URL,當受害者點擊這些專門設計鏈接的時候,惡意代碼會直接在受害主機上的瀏覽器上執行,反射型XSS通常出現在網站搜索欄,用戶登入口等地方,常用來竊取客戶端或進行釣魚欺騙。

[if !supportLists]2、[endif]存儲型XSS攻擊

存儲型XSS攻擊也叫持久型XSS,主要將XSS代碼提交儲存在伺服器端(資料庫,內存,文件系統等)下次請求目標頁面時不用在提交XSS代碼。當目標用戶訪問該頁面獲取數據時,XSS代碼會從伺服器解析之後載入出來,返回到瀏覽器做正常的HTML和JS解析執行,XSS攻擊就發生了。儲存型XSS一般出現在網站留言,評論,博客日誌等交互處,惡意腳本儲存到客戶端或者服務端的資料庫中。

[if !supportLists]3、[endif]DOM-based型XSS攻擊

DOM-based型XSS攻擊它是基於DOM的XSS攻擊是指通過惡意腳本修改頁面的DOM結構,是純粹發生在客戶端的攻擊。DOM型XSS攻擊中,取出和執行惡意代碼由瀏覽器端完成,屬於前端JavaScript自身的安全漏洞。

如何防禦XSS攻擊?

[if !supportLists]1、[endif]對輸入內容的特定字元進行編碼,列如表示html標記<>等符號。

[if !supportLists]2、[endif]對重要的cookie設置httpOnly,防止客戶端通過document。cookie讀取cookie,此HTTP開頭由服務端設置。

[if !supportLists]3、[endif]將不可信的輸出URT參數之前,進行URLEncode操作,而對於從URL參數中獲取值一定要進行格式檢查

[if !supportLists]4、[endif]不要使用Eval來解析並運行不確定的數據或代碼,對於JSON解析請使用JSON。Parse()方法

[if !supportLists]5、[endif]後端介面也應該要做到關鍵字元過濾的問題。

⑩ XSS跨站腳本攻擊剖析與防禦的作品目錄

目錄第1章XSS初探11.1跨站腳本介紹11.1.1什麼是XSS跨站腳本21.1.2XSS跨站腳本實例41.1.3XSS漏洞的危害61.2XSS的分類81.2.1反射型XSS81.2.2持久型XSS101.3XSS的簡單發掘121.3.1搭建測試環境121.3.2發掘反射型的XSS121.3.3發掘持久型的XSS151.4XSS Cheat Sheet181.5XSS構造剖析211.5.1繞過XSS-Filter221.5.2利用字元編碼331.5.3拆分跨站法371.6Shellcode的調用391.6.1動態調用遠程JavaScript401.6.2使用window.location.hash411.6.3XSS Downloader411.6.4備選存儲技術43第2章XSS利用方式剖析452.1Cookie竊取攻擊剖析452.1.1Cookie基礎介紹462.1.2Cookie會話攻擊原理剖析482.1.3Cookie欺騙實例剖析492.2會話劫持剖析512.2.1了解Session機制512.2.2XSS實現許可權提升522.2.3獲取網站Webshell552.3網路釣魚572.3.1XSS Phishing572.3.2XSS釣魚的方式592.3.3高級釣魚技術602.4XSS History Hack632.4.1鏈接樣式和getComputedStyle()642.4.2JavaScript/CSS history hack642.4.3竊取搜索查詢652.5客戶端信息刺探672.5.1JavaScript實現埠掃描672.5.2截獲剪貼板內容682.5.3獲取客戶端IP地址702.6其他惡意攻擊剖析712.6.1網頁掛馬712.6.2DOS和DDOS722.6.3XSS Virus/Worm73第3章XSS測試和工具剖析753.1Firebug753.2Tamper Data803.3Live HTTP Headers823.4Fiddler843.5XSS-Proxy863.6XSS Shell903.7AttackAPI943.8Anehta98第4章發掘XSS漏洞1044.1黑盒工具測試1044.2黑盒手動測試1074.3源代碼安全審計1104.4JavaScript代碼分析1184.4.1DOM簡介1184.4.2第三種XSS——DOM XSS1204.4.3發掘基於DOM的XSS1234.5發掘Flash XSS1264.6巧用語言特性1294.6.1PHP 4 phpinfo() XSS1304.6.2$_SERVER[PHP_SELF]1314.6.3變數覆蓋132第5章XSS Worm剖析1355.1Web 2.0應用安全1355.1.1改變世界的Web 2.01355.1.2淺談Web 2.0的安全性1375.2Ajax技術指南1385.2.1使用Ajax1395.2.2XMLHttpRequest對象1405.2.3HTTP請求1425.2.4HTTP響應1425.3瀏覽器安全1455.3.1沙箱1455.3.2同源安全策略1465.4XSS Worm介紹1475.4.1蠕蟲病毒剖析1475.4.2XSS Worm攻擊原理剖析1485.4.3XSS Worm剖析1495.4.4運用DOM技術1505.5新浪微博蠕蟲分析153第6章Flash應用安全1566.1Flash簡介1566.1.1Flash Player 與SWF1566.1.2嵌入Flash文件1586.1.3ActionScript語言1586.2Flash安全模型1606.2.1Flash安全沙箱1616.2.2Cross Domain Policy1626.2.3設置管理器1646.3Flash客戶端攻擊剖析1656.3.1getURL() &amp; XSS1656.3.2Cross Site Flashing1696.3.3Flash參數型注入1716.3.4Flash釣魚剖析1736.4利用Flash進行XSS攻擊剖析1746.5利用Flash進行CSRF178第7章深入XSS原理1817.1深入淺出CSRF1827.1.1CSRF原理剖析1827.1.2CSRF實例講解剖析1857.1.3CSRF的應用剖析1877.2Hacking JSON1877.2.1JSON概述1877.2.2跨域JSON注入剖析1907.2.3JSON Hijacking1917.3HTTP Response Splitting1937.3.1HTTP Header1937.3.2CRLF Injection原理1957.3.3校內網HRS案例1977.4MHTML協議的安全1997.5利用Data URIs進行XSS剖析2037.5.1Data URIs介紹2037.5.2Data URIs XSS2047.5.3vBulletin Data URIs XSS2067.6UTF-7 BOM XSS2067.7瀏覽器插件安全2117.7.1Flash後門2117.7.2來自PDF的XSS2137.7.3QuickTime XSS2177.8特殊的XSS應用場景剖析2187.8.1基於Cookie的XSS2187.8.2來自RSS的XSS2207.8.3應用軟體中的XSS2227.9瀏覽器差異2257.9.1跨瀏覽器的不兼容性2267.9.2IE嗅探機制與XSS2267.9.3瀏覽器差異與XSS2287.10字元集編碼隱患231第8章防禦XSS攻擊2348.1使用XSS Filter2348.1.1輸入過濾2358.1.2輸出編碼2378.1.3黑名單和白名單2398.2定製過濾策略2408.3Web安全編碼規范2448.4防禦DOM-Based XSS2488.5其他防禦方式2508.5.1Anti_XSS2508.5.2HttpOnly Cookie2528.5.3Noscript2538.5.4WAF2548.6防禦CSRF攻擊2558.6.1使用POST替代GET2568.6.2檢驗HTTP Referer2578.6.3驗證碼2588.6.4使用Token259參考文獻262