1. 程式人生 > >Web安全之XML注入

Web安全之XML注入

XML注入攻擊,和SQL注入的原理一樣,都是攻擊者輸入惡意的程式碼來執行自身許可權以外的功能。
XML是儲存資料的一種方式,如果在修改或者查詢時,沒有做轉義,直接輸入或輸出資料,都將導致XML注入漏洞。攻擊者可以修改XML資料格式,增加新的XML節點,對資料處理流程產生影響。

攻擊

下面是一個儲存註冊使用者資訊為XML格式的例子:

final String GUESTROLE = "guest_role";
...
//userdata是準備儲存的xml資料,接收了name和email兩個使用者提交來的資料。
String userdata = "<USER role="+
                GUESTROLE+
                "><name>"
+ request.getParameter("name")+ "</name><email>"+ request.getParameter("email")+ "</email></USER>"; //儲存xml userDao.save(userdata);

可以看到,這段程式碼沒有進行任何的過濾操作。一個普通使用者註冊後,會產生這樣一條資料記錄:

<?xml version="1.0" encoding="UTF-8"?>
<USER role="guest_role"> <name>user1 </name> <email>[email protected] </email> </USER>

攻擊者輸入自己email時,可以輸入如下程式碼:

[email protected]</email></USER><USER role="admin_role"><name>lf</name><email>[email protected]

終端使用者註冊後,資料就變成了:

<?xml version="1.0" encoding="UTF-8"?>
<USER role="guest_role">
    <name>user1
    </name>
    <email>[email protected]</email>
</USER>
<USER role="admin_role">
    <name>lf</name>
    <email>[email protected]
    </email>
</USER>

可以看到,多出了一條role=“admin_role”的管理員lf。達到攻擊目的。

防禦

還是那句老話,有攻擊就有防禦。防禦的原理其實也很簡單,就是對關鍵字串進行轉義:

& --> &amp;
 < --> &lt;
 > --> &gt;
 " --> &quot;
 ' --> &#39; 

在XML儲存和展示之前,對資料部分,單獨做轉義即可:

String userdata = "<USER role="+
                GUESTROLE+
                "><name>"+
                StringUtil.xmlencode(request.getParameter("name"))+
                "</name><email>"+
                StringUtil.xmlencode(rrequest.getParameter("email"))+
                "</email></USER>";

這樣就解決啦。

相關推薦

Web安全XML注入

XML注入攻擊,和SQL注入的原理一樣,都是攻擊者輸入惡意的程式碼來執行自身許可權以外的功能。 XML是儲存資料的一種方式,如果在修改或者查詢時,沒有做轉義,直接輸入或輸出資料,都將導致XML注入漏洞。攻擊者可以修改XML資料格式,增加新的XML節點,對資料處

【29】WEB安全學習----XML注入

一、XML基礎 簡介: XML:可擴充套件標記語言。XML被設計用來是傳輸和儲存資料,XML是一種“元標記”語言,開發者可以根據自己的需要建立標記的名稱。 XML結構 XML是一種樹結構,從“根部”開始,然後擴充套件到“枝葉”,XML文件必須有根元素。 <?x

Web安全SQL注入攻擊技巧與防範

在Web1.0時代,人們更多是關注伺服器端動態指令碼語言的安全問題,比如將一個可執行指令碼(俗稱Webshell)通過指令碼語言的漏洞上傳到伺服器上,從而獲得伺服器許可權。在Web發展初期,隨著動態指令碼語言的發展和普及,以及早期工程師對安全問題認知不足導致很多”安全血案”

Web安全SQL注入

什麼是SQL注入? sql注入是一種將sql程式碼新增到輸入引數中,傳遞到sql伺服器解析並執行的一種攻擊手法 SQL是怎麼產生的? WEB開發人員無法保證所有的輸入都已經過濾攻擊者利用傳送給SQL伺服器的輸入資料構造可執行的SQL程式碼資料庫未做相應安全配置 如

java專家路(四)——Web安全——Xss注入類風險

簡介: 1. XSS攻擊原理 XSS原稱為CSS(Cross-Site Scripting),因為和層疊樣式表(Cascading Style Sheets)重名,所以改稱為XSS(X一般有未知的含義,還有擴充套件的含義)。XSS攻擊涉及到三方:攻擊者,

Web安全:SQL注入

條件 使用者可以接觸並修改傳送到伺服器的內容 URL判斷 and 1=1 and 1=2 依據返回資訊判斷 整形 ’ 同上 字元型判斷 -1 / +1 回顯上個頁面 整形 and sleep(12)

python Web安全防止SQL注入

伴隨著Web2.0、社交網路、微博等一系列新型網際網路產品的興起,基於Web環境的網際網路應用越來越廣泛,Web攻擊的手段也越來越多樣,Web安全史上的一個重要里程碑是大約1999年發現的SQL注入攻擊,之後的XSS,CSRF等攻擊手段愈發強大,Web攻擊的思路也從服務端轉向了客戶端,轉向了瀏覽器和

Web安全XSS與SQL注入

一、 前言 近幾年,伴隨網際網路的高速發展,對Web安全問題的重視也越來越高。Web應用所面臨的威脅來自很多方面,其中黑客的破壞是影響最大的,黑客利用Web應用程式存在的漏洞進行非法入侵,從而破壞Web應用服務,盜取使用者資料等,如何防範漏洞帶來的安全威脅是一

web安全同源策略

rip 瀏覽器中 屬性。 名單 java get message 否則 cookie 為什麽使用同源策略?一個重要原因就是對cookie的保護,cookie 中存著sessionID 。如果已經登錄網站,同時又去了任意其他網站,該網站有惡意JS代碼。如果沒有同源策略,那麽這

Web安全 X-Frame-Options響應頭配置

編制 可能 腳本編制 攻擊 invalid mis itl pla snippet   最近項目處於測試階段,在安全報告中存在" X-Frame-Options 響應頭缺失 "問題,顯示可能會造成跨幀腳本編制攻擊,如下圖:      X-Frame-Options:   值

Web安全越權操作:橫向越權與縱向越權

localhost new 用戶修改 情況 name 查看 普通用戶 新的 登錄 參考:http://blog.csdn.net/github_39104978/article/details/78265433 看了上面的文章,對越權操作的概念還是比較模糊,不明確實際場景。

Web安全CSRF攻擊

for idt 例子 expr 由於 不能 防止 失效 內容 一、CSRF是什麽? CSRF(Cross Site Request Forgery),中文是跨站點請求偽造。CSRF攻擊者在用戶已經登錄目標網站之後,誘使用戶訪問一個攻擊頁面,利用目標網站對用戶的信任,以用戶身

web安全token

sub decode tutorial nag 發送 PC 大型網站 ppr ade 最近了解下基於 Token 的身份驗證,跟大夥分享下。很多大型網站也都在用,比如 Facebook,Twitter,Google+,Github 等等,比起傳統的身份驗證方法,Toke

20155236範晨歌免考項目:web安全漏洞利用

以及 程序 pin href pst 虛擬 php arm .html PHP和PHPinfo的簡單介紹 https://www.cnblogs.com/fcgfcgfcg/p/9234978.html 通過CSRF漏洞加深理解 https://www.cnblogs.

web安全SQL註入

password 嚴格 add code 數據 檢查 star 代碼 輸入數據 一、如何理解SQL註入? SQL註入是一種將SQL代碼添加到輸入參數中 傳遞到SQL服務器解析並執行的一種×××手法 二、SQL註入是怎麽產生的? WEB開發人員無法保證所有的輸入都已經過

Web 安全內容安全策略(Content-Security-Policy,CSP)詳解

pid eba elf safe 數據 信息 java php 我們 1.CSP 簡介 內容安全策略(Content Security Policy,簡稱CSP)是一種以可信白名單作機制,來限制網站是否可以包含某些來源內容,緩解廣泛的內容註入漏洞,比如 XSS。 簡單來說,

Web安全跨站腳本攻擊(XSS)

sca 各類 隱藏 word create 十六 請求 後臺 轉換成 XSS 簡介 跨站腳本攻擊,英文全稱是 Cross Site Script,本來縮寫是CSS,但是為了和層疊樣式表(Cascading Style Sheet,CSS)有所區別,所以在安全領域叫做“XSS

Web安全漏洞——sql注入

1.原理 注入攻擊的本質,是把使用者輸入的資料當成程式碼執行。兩個關鍵條件:一是使用者能夠控制輸入;二是原本程式要執行的程式碼,拼接了使用者輸入的資料。當攻擊者傳送的sql語句被sql直譯器執行,通過執行這些惡意語句欺騙資料庫執行,導致資料庫資訊洩露。 2.分類 按注入點

Web安全xss

1>XSS漏洞是Web應用程式中最常見的漏洞之一。如果您的站點沒有預防XSS漏洞的固定方法,那麼就存在XSS漏洞。這個利用XSS漏洞的病毒之所以具有重要意義是因為,難以看到XSS漏洞的威脅,而該病毒則將其發揮得淋漓盡致。 2>XSS攻擊分為兩類,一類是來自內部的攻擊,主要指的是利用程式

web安全檔案上傳漏洞攻擊與防範方法

一、 檔案上傳漏洞與WebShell的關係 檔案上傳漏洞是指網路攻擊者上傳了一個可執行的檔案到伺服器並執行。這裡上傳的檔案可以是木馬,病毒,惡意指令碼或者WebShell等。這種攻擊方式是最為直接和有效的,部分檔案上傳漏洞的利用技術門檻非常的低,對於攻擊者來說很容易實施。 檔案上傳漏洞本身就是一