Ⅰ xss漏洞防禦方法
xss漏洞防禦方法有輸入過濾、純前端渲染、轉義HTML和標簽和屬性基於白名單過濾。
輸入過濾:有時候需要多次過濾,猛神汪例如<scrip<script>t>過濾掉<script>後還是<script>,需要注意多個過濾器的先後次序。當多個過濾器一起生效時,有可能後進行的過濾導致前面的過濾失效。
純前端渲染:在純前端渲染中,我們會明確的告訴瀏覽器:下面要設置的內容是文本(innerText),還是屬性(setAttribute),還是瞎信樣式(style)等等。瀏覽器不會被輕易的被欺騙,執行預期外的代碼了。
轉義HTML:如果拼接HTML是必要的,就需要採用合適的轉義庫,對HTML模板各處插入點進行充分的轉義。常用的模板引擎,如ejs、FreeMarker等,對於HTML轉義通常只有一個規則,就是把&、<、>、"、'、/這幾個字元轉義掉,確實能起到一定的XSS防護作用。枝仔
標簽和屬性基於白名單過濾:對於副文本編輯器來說,其產物本身就是html代碼,所以沒辦法簡單粗暴使用轉義來處理,應該要對內容中的標簽和屬性,基於白名單進行過濾(附XSS黑名單:DOM中的內聯事件監聽器如onclick等、<a>標簽的href屬性、<script>標簽、css中的url功能)。
xss攻擊的原理
HTML是一種超文本標記語言,通過將一些字元特殊地對待來區別文本和標記,例如,小於符號(<)被看作是HTML標簽的開始,<title>與</title>之間的字元是頁面的標題等等。
當動態頁面中插入的內容含有這些特殊字元(如<)時,用戶瀏覽器會將其誤認為是插入了HTML標簽,當這些HTML標簽引入了一段JavaScript腳本時,這些腳本程序就將會在用戶瀏覽器中執行。所以,當這些特殊字元不能被動態頁面檢查或檢查出現失誤時,就將會產生XSS漏洞。
Ⅱ 關於ASP網站XSS漏洞,請幫忙過濾一下,謝謝
FunctionCheckxss(byValChkStr)
DimStr
Str=ChkStr
IfIsNull(Str)Then
CheckStr=""
ExitFunction
EndIf
Str=Replace(Str,"&","&")
Str=Replace(Str,"'","´")
Str=Replace(Str,"""",""")
Str=Replace(Str,"<","<")
Str=Replace(Str,">",">")
Str=Replace(Str,"/","/")
Str=Replace(Str,"*","*")
Dimre
Setre=NewRegExp
re.IgnoreCase=True
re.Global=True
re.Pattern="(w)(here)"
Str=re.Replace(Str,"$1here")
re.Pattern="(s)(elect)"
Str=re.Replace(Str,"$1elect")
re.Pattern="(i)(nsert)"
Str=re.Replace(Str,"$1nsert")
re.Pattern="(c)(reate)"
Str=re.Replace(Str,"$1reate")
re.Pattern="(d)(rop)"
Str=re.Replace(Str,"$1rop")
re.Pattern="(a)(lter)"
Str=re.Replace(Str,"$1lter")
re.Pattern="(d)(elete)"
Str=re.Replace(Str,"$1elete")
re.Pattern="(u)(pdate)"
Str=re.Replace(Str,"$1pdate")
re.Pattern="(s)(or)"
Str=re.Replace(Str,"$1or")
re.Pattern="( )"
Str=re.Replace(Str,"$1or")
'----------------------------------
re.Pattern="(java)(script)"
Str=re.Replace(Str,"$1script")
re.Pattern="(j)(script)"
Str=re.Replace(Str,"$1script")
re.Pattern="(vb)(script)"
Str=re.Replace(Str,"$1script")
'----------------------------------
IfInstr(Str,"expression")>0Then
Str=Replace(Str,"expression","expression",1,-1,0)'防止xss注入
EndIf
Setre=Nothing
Checkxss=Str
EndFunction
使用方法:Checkxss(request.QueryString("變數")),或者(request.form("表單名"))
Ⅲ xss漏洞如何防禦
1、基於特徵的防禦。XSS漏洞和著名的SQL注入漏洞一樣,都是利用了Web頁面的編寫不完善,所以每一個漏洞所利用和針對的弱點都不盡相同,這就是給XSS漏洞防禦帶來的困難,不可能以單一特徵來概括所有XSS攻擊。
傳統的XSS防禦在進行攻擊鑒別時多採用特徵匹配方式,主要是針對JavaScript這個關鍵詞進行檢索,但是這種鑒別不夠靈活,凡是提交的信息中各有JavaScript時,就被硬性的判定為XSS攻擊。
2、基於代碼修改的防禦。Web頁面開發者在編寫程序時往往會出現一些失誤或漏洞,XSS攻擊正是利用了失誤和漏洞,因此一種比較理想的方法就是通過優化Web應用開發來減少漏洞,避免被攻擊:
①用戶向伺服器上提交的信息要對URL和附帶的HTTP頭、POST數據等進行查詢,對不是規定格式、長度的內容進行過濾。
②實現Session標記、CAPTCHA系統或者HTTP引用頭檢查,以防功能被第三方網站所執行。
③確認接收的內容被妥善的規范化,僅包含最小的、安全的Tag,去掉任何對遠程內容的引用,使用HTTP only的cookie。
3、客戶端分層防禦策略。客戶端跨站腳本攻擊的分層防禦策略是基於獨立分配線程和分層防禦策略的安全模型。它建立在客戶端,這是它與其他模型最大的區別。之所以客戶端安全性如此重要,客戶端在接受伺服器信息,選擇性的執行相關內容。這樣就可以使防禦XSS攻擊變得容易,該模型主要由三大部分組成:
①對每一個網頁分配獨立線程且分析資源消耗的網頁線程分析模塊;
②包含分層防禦策略四個規則的用戶輸入分析模塊;
③保存互聯網上有關XSS惡意網站信息的XSS信息資料庫。