asp跨站腳本攻擊漏洞
① 如何防止跨站點腳本攻擊
你好~
XSS漏洞產生的原因:
跨站點腳本的主要原因是程序猿對用戶的信任。開發人員輕松地認為用戶永遠不會試圖執行什麼出格的事情,所以他們創建應用程序,卻沒有使用任何額外的代碼來過濾用戶輸入以阻止任何惡意活動。另一個原因是,這種攻擊有許多變體,用製造出一種行之有效的XSS過濾器是一件比較困難的事情。
但是這只是相對的,對用戶輸入數據的」編碼」和」過濾」在任何時候都是很重要的,我們必須採取一些針對性的手段對其進行防禦。
如何創造一個良好的XSS過濾器來阻止大多數XSS攻擊代碼
1 .需要重點」編碼」和」過濾」的對象
The URL
HTTP referrer objects
GET parameters from a form
POST parameters from a form
Window.location
Document.referrer
document.location
document.URL
document.URLUnencoded
cookie data
headers data
database data
防禦XSS有一個原則:
以當前的應用系統為中心,所有的進入應用系統的數據都看成是輸入數據(包括從FORM表單或者從資料庫獲取到的數據),所有從當前應用系統流出的數據都看作是輸出(包括輸出到用戶瀏覽器或向資料庫寫入數據)
對輸入的數據進行」過濾」,對輸出數據進行」編碼」。這里的」編碼」也要注意,必須針對數據具體的上下文語境進行針對性的編碼。例如數據是輸出到HTML中的那就要進行HtmlEncode,如果數據是輸出到javascript代碼中進行拼接的,那就要進行javascriptEncode。
如果不搞清楚數據具體輸出的語境,就有可能因為HtmlParser()和javascriptParser()兩種解析引擎的執行先後問題導致看似嚴密的」編碼」形同虛設。
2. HtmlEncode HTML編碼
它的作用是將字元轉換成HTMLEntities,對應的標準是ISO-8859-1
為了對抗XSS,在HtmlEncode中要求至少轉換以下字元:
& --> &
< --> <
> --> >
" --> "
' --> '
/ --> /
在php中:
htmlentities
http://www.w3school.com.cn/php/func_string_htmlentities.asp
htmlspecialchars
http://www.w3school.com.cn/php/func_string_htmlspecialchars.asp
3. javascriptEncode javascript」編碼」
javascriptEncode與HtmlEncode的編碼方法不同,HtmlEncode是去編碼,而javascriptEncode更多的像轉義,它需要使用」\」對特殊字元進行轉義。從原理上來講,這都符合編碼函數的一個大原則: 將數據和代碼區分開,因為對於HTML Tag來說,我們對其進行」可視化(轉換成可以見字元)」的編碼可以將數據和HTML的界限分開。而對於javascript來說,我們除了要進行編碼之外,還需要對特殊字元進行轉義,這樣攻擊輸入的用於」閉合」的特殊字元就無法發揮作用,從而避免XSS攻擊,除此之外,在對抗XSS時,還要求輸出的變數必須在引號內部,以避免造成安全問題。
escape()
http://www.w3school.com.cn/js/jsref_escape.asp
該方法不會對 ASCII 字母和數字進行編碼,也不會對下面這些 ASCII 標點符號進行編碼: * @ – _ + . / 。其他所有的字元都會被轉義序列(十六進制\xHH)替換。
利用這個編碼函數,不僅能防禦XSS攻擊,還可以防禦一些command注入。
一些開源的防禦XSS攻擊的代碼庫:
PHP AntiXSS
這是一個不錯的PHP庫,可以幫助開發人員增加一層保護,防止跨站腳本漏洞。
https://code.google.com/p/php-antixss/
xss_clean.php filter
https://gist.github.com/mbijon/1098477
HTML Purifier
http://htmlpurifier.org/
xssprotect
https://code.google.com/p/xssprotect/
XSS HTML Filter
http://finn-no.github.io/xss-html-filter/
原文地址:http://resources.infosecinstitute.com/how-to-prevent-cross-site-scripting-attacks/
希望可以幫助到你~望採納哦~謝謝~
② 最近網上流行的XSS是什麼意思
最近網上流行的XSS是小學生的惡稱,罵小學生的。
一是指某些人的想法、思維方式、對事物的認知和思考能力如孩子般幼稚、單純、天真。
二是特指某類相對於同齡的人,在游戲競技或者社交網路中, 態度傲慢、技術水準較差、拒絕與隊友溝通、獨斷專行、忽視團隊合作、甚至喜歡惡語相向的網遊玩家。
三是指對沒有接觸過社會或社會經驗不足。
(2)asp跨站腳本攻擊漏洞擴展閱讀:
1、小學生技術菜,愛罵人,玻璃心(說他一句就掛機送人頭,不管說什麼,比如:中路的你不要再送了,然後他就說「我就送」,接著就開始了。)小學生的心思就像星空,摸不著猜不透。
2、大噴子(網路中對喜歡肆意謾罵、地域黑、招黑、互黑等網友的一種廣泛性定義。),不分青紅皂白就開噴。
3、說話不經過大腦考慮,以自我為中心,可能是在家被寵慣了。
4、沒有接觸過社會大家庭或接觸社會經驗不足。比如:參加工作,你要是不讓新人上,永遠都是新人。這也是小學生。
③ 什麼是xxs漏洞
XSS攻擊的危害包括 1、盜取各類用戶帳號,如機器登錄帳號、用戶網銀帳號、各類管理員帳號 2、控制企業數據,包括讀取、篡改、添加、刪除企業敏感數據的能力 3、盜竊企業重要的具有商業價值的資料 4、非法轉賬 5、強制發送電子郵件 6、網站掛馬 7、控制受害者機器向其它網站發起攻擊 1.2 XSS漏洞的分類 XSS漏洞按照攻擊利用手法的不同,有以下三種類型: 類型A,本地利用漏洞,這種漏洞存在於頁面中客戶端腳本自身。其攻擊過程如下所示: Alice給Bob發送一個惡意構造了Web的URL。 Bob點擊並查看了這個URL。 惡意頁面中的JavaScript打開一個具有漏洞的HTML頁面並將其安裝在Bob電腦上。 具有漏洞的HTML頁麵包含了在Bob電腦本地域執行的JavaScript。 Alice的惡意腳本可以在Bob的電腦上執行Bob所持有的許可權下的命令。 類型B,反射式漏洞,這種漏洞和類型A有些類似,不同的是Web客戶端使用Server端腳本生成頁面為用戶提供數據時,如果未經驗證的用戶數據被包含在頁面中而未經HTML實體編碼,客戶端代碼便能夠注入到動態頁面中。其攻擊過程如下: Alice經常瀏覽某個網站,此網站為Bob所擁有。Bob的站點運行Alice使用用戶名/密碼進行登錄,並存儲敏感信息(比如銀行帳戶信息)。 Charly發現Bob的站點包含反射性的XSS漏洞。 Charly編寫一個利用漏洞的URL,並將其冒充為來自Bob的郵件發送給Alice。 Alice在登錄到Bob的站點後,瀏覽Charly提供的URL。 嵌入到URL中的惡意腳本在Alice的瀏覽器中執行,就像它直接來自Bob的伺服器一樣。此腳本盜竊敏感信息(授權、信用卡、帳號信息等)然後在Alice完全不知情的情況下將這些信息發送到Charly的Web站點。 類型C,存儲式漏洞,該類型是應用最為廣泛而且有可能影響到Web伺服器自身安全的漏洞,駭客將攻擊腳本上傳到Web伺服器上,使得所有訪問該頁面的用戶都面臨信息泄漏的可能,其中也包括了Web伺服器的管理員。其攻擊過程如下: Bob擁有一個Web站點,該站點允許用戶發布信息/瀏覽已發布的信息。 Charly注意到Bob的站點具有類型C的XXS漏洞。 Charly發布一個熱點信息,吸引其它用戶紛紛閱讀。 Bob或者是任何的其他人如Alice瀏覽該信息,其會話cookies或者其它信息將被Charly盜走。 類型A直接威脅用戶個體,而類型B和類型C所威脅的對象都是企業級Web應用
④ XSS是什麼
1、XSS是跨站腳本攻擊(Cross Site Scripting),為不和層疊樣式表(Cascading Style Sheets, CSS)的縮寫混淆,故將跨站腳本攻擊縮寫為XSS。
2、惡意攻擊者往Web頁面里插入惡意html代碼,當用戶瀏覽該頁之時,嵌入其中Web裡面的html代碼會被執行,從而達到惡意攻擊用戶的特殊目的。
3、XSS攻擊分成兩類,一類是來自內部的攻擊,主要指的是利用程序自身的漏洞,構造跨站語句,如:dvbbs的showerror.asp存在的跨站漏洞。
4、另一類則是來自外部的攻擊,主要指的自己構造XSS跨站漏洞網頁或者尋找非目標機以外的有跨站漏洞的網頁。如當要滲透一個站點,自己構造一個有跨站漏洞的網頁,然後構造跨站語句,通過結合其它技術,如社會工程學等,欺騙目標伺服器的管理員打開。
⑤ asp 求修復方法 XSS跨站腳本漏洞
UName=Replace(trim(Request.Form("UserName")),"'","")
PW=Replace(trim(Request.Form("Password")),"'","")
Sex=Replace(trim(Request.Form("Sex")),"'","")
QQ=Replace(trim(Request.Form("QQ")),"'","")
Age=Replace(trim(Request.Form("Age")),"'","")
AH=Replace(trim(Request.Form("AH")),"'","")
SF=Replace(trim(Request.Form("SF")),"'","")
這里
我只舉一個例子,以下全部效仿
UName=Replace(trim(Request.Form("UserName")),"'","")
改為
UName=Replace(Replace(Replace(Replace(trim(Request.Form("UserName")),"'",""),Chr(34),""),":",""),"%","")
把' " %等危險字元過濾掉就行了