Xss過濾器如何配置?Xss過濾器配置方法

本篇文章給大家?guī)淼膬?nèi)容是關(guān)于xss過濾器如何配置?xss過濾器配置方法,有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)你有所幫助。

1.XSS是什么?

跨站腳本(cross site script)簡(jiǎn)稱為XSS,是一種經(jīng)常出現(xiàn)在web應(yīng)用中的計(jì)算機(jī)安全漏洞,也是web中最主流的攻擊方式。

XSS是指惡意攻擊者利用網(wǎng)站沒有對(duì)用戶提交數(shù)據(jù)進(jìn)行轉(zhuǎn)義處理或者過濾不足的缺點(diǎn),進(jìn)而添加一些代碼,嵌入到web頁面中去,使別的用戶訪問都會(huì)執(zhí)行相應(yīng)的嵌入代碼。

2.XSS攻擊的危害

1、盜取用戶資料,比如:登錄帳號(hào)、網(wǎng)銀帳號(hào)等

2、利用用戶身份,讀取、篡改、添加、刪除企業(yè)敏感數(shù)據(jù)等

3、盜竊企業(yè)重要的具有商業(yè)價(jià)值的資料

4、非法轉(zhuǎn)賬

5、強(qiáng)制發(fā)送電子郵件

6、網(wǎng)站掛馬

7、控制受害者機(jī)器向其它網(wǎng)站發(fā)起攻擊

3.防止XSS解決方案

XSS的根源主要是沒完全過濾客戶端提交的數(shù)據(jù) ,所以重點(diǎn)是要過濾用戶提交的信息。

?將重要的Cookie標(biāo)記為http only, 這樣的話JS 中的document.cookie語句就不能獲取到cookie了.

?只允許用戶輸入我們期望的數(shù)據(jù)。 例如:age用戶年齡只允許用戶輸入數(shù)字,而數(shù)字之外的字符都過濾掉。

?對(duì)數(shù)據(jù)進(jìn)行html Encode 處理: 用戶將數(shù)據(jù)提交上來的時(shí)候進(jìn)行HTML編碼,將相應(yīng)的符號(hào)轉(zhuǎn)換為實(shí)體名稱再進(jìn)行下一步的處理。

?過濾或移除特殊的Html標(biāo)簽, 例如: <script>, <iframe> , < for <, > for >, &quot for</script>

?過濾js事件的標(biāo)簽。例如 “onclick=”, “onfocus” 等等。

項(xiàng)目以SpringBoot項(xiàng)目為例:

XssFilter:

import?javax.servlet.*; import?javax.servlet.http.HttpServletRequest; import?java.io.IOException; import?java.util.List; @Compent public?class?XssFilter?implements?Filter?{ FilterConfig?filterConfig?=?null; private?List<string>?urlExclusion?=?null; public?void?init(FilterConfig?filterConfig)?throws?ServletException?{ this.filterConfig?=?filterConfig; } public?void?destroy()?{ this.filterConfig?=?null; } public?void?doFilter(ServletRequest?request,?ServletResponse?response,?FilterChain?chain)?throws?IOException,?ServletException?{ HttpServletRequest?httpServletRequest?=?(HttpServletRequest)?request; String?servletPath?=?httpServletRequest.getServletPath(); if?(urlExclusion?!=?null?&amp;&amp;?urlExclusion.contains(servletPath))?{ chain.doFilter(request,?response); }?else?{ chain.doFilter(new?XssHttpServletRequestWrapper((HttpServletRequest)?request),?response); } } public?List<string>?getUrlExclusion()?{ return?urlExclusion; } public?void?setUrlExclusion(List<string>?urlExclusion)?{ this.urlExclusion?=?urlExclusion; } }</string></string></string>

XssHttpServletRequestWrapper:

import?javax.servlet.http.HttpServletRequest; import?javax.servlet.http.HttpServletRequestWrapper; public?class?XssHttpServletRequestWrapper?extends?HttpServletRequestWrapper?{ public?XssHttpServletRequestWrapper(HttpServletRequest?servletRequest)?{ super(servletRequest); } public?String[]?getParameterValues(String?parameter)?{ String[]?values?=?super.getParameterValues(parameter); if?(values?==?null)?{ return?null; } int?count?=?values.length; String[]?encodedValues?=?new?String[count]; for?(int?i?=?0;?i?",?"&amp;?gt;"); value?=?value.replaceAll("(",?"&amp;?#40;")。replaceAll(")",?"&amp;?#41;"); value?=?value.replaceAll("'",?"&amp;?#39;"); value?=?value.replaceAll("eval((。*))",?""); value?=?value.replaceAll("["'][s]*javascript:(。*)["']",?""""); value?=?value.replaceAll("script",?""); return?value; } }

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊9 分享