日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Springboot實現XSS漏洞過濾的示例代碼

瀏覽:205日期:2023-03-29 08:33:08
背景

前陣子做了幾個項目,終于開發完畢,進入了測試階段,信心滿滿將項目部署到測試環境,然后做了安全測評之后.....

Springboot實現XSS漏洞過濾的示例代碼 ​(什么!你竟然說我代碼不安全???)

然后測出了 Xss漏洞 安全的問題

解決方案

場景:可以在頁面輸入框輸入JS腳本, 攻擊者可以利用此漏洞執行惡意的代碼

問題演示

Springboot實現XSS漏洞過濾的示例代碼

Springboot實現XSS漏洞過濾的示例代碼

所以我們要對于前端傳輸的參數做處理,做統一全局過濾處理

既然要過濾處理,我們首先需要實現一個自定義過濾器

總共包含以下四部分

XssUtil XssFilterAutoConfig XssHttpServletRequestWrapper XssStringfJsonDeserializer

Springboot實現XSS漏洞過濾的示例代碼

Springboot實現XSS漏洞過濾的示例代碼

最后我們需要在全局過濾器中使用我們實現的Xss自定義過濾器

代碼實現

XssFilterAtuoConfig實現代碼

import com.fasterxml.jackson.databind.ObjectMapper;import com.fasterxml.jackson.databind.module.SimpleModule;import net.greatsoft.overallbudget.filter.SimpleCORSFilter;import org.springframework.boot.context.embedded.FilterRegistrationBean;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Primary;import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;/** * Created by wjy on 2020/11/5. * xss 自動配置類 */@Configurationpublic class XssFilterAtuoConfig { /** * 注冊自定義過濾器 * @return */ @Bean public FilterRegistrationBean xssFiltrRegister() { FilterRegistrationBean registration = new FilterRegistrationBean(); //設置系統過濾器 (setFilter就是你所定義的過濾器filter類) registration.setFilter(new SimpleCORSFilter()); //過濾所有路徑 registration.addUrlPatterns('/*'); //過濾器名稱 registration.setName('XssFilter'); //優先級 registration.setOrder(1); return registration; } /** * 過濾JSON數據 * @return */ @Bean @Primary public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() { SimpleModule module = new SimpleModule(); //自定義序列化過濾配置(XssStringJsonDeserializer), 對入參進行轉譯 module.addDeserializer(String.class, new XssStringJsonDeserializer()); // 注冊解析器 ObjectMapper objectMapper = Jackson2ObjectMapperBuilder.json().build(); objectMapper.registerModule(module); return new MappingJackson2HttpMessageConverter(objectMapper); }}

XssHttpServletRequestWrapper實現代碼

/** * Created by wjy on 2020/11/5. * xss 包裝 */public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper { public XssHttpServletRequestWrapper(HttpServletRequest request) { super(request); } /** * 對header處理 * @param name * @return */ @Override public String getHeader(String name) { String value = super.getHeader(name); return XssUtil.cleanXSS(value); } /** * 對參數處理 * @param name * @return */ @Override public String getParameter(String name) { String value = super.getParameter(name); return XssUtil.cleanXSS(value); } /** * 對數值進行處理 * @param name * @return */ @Override public String[] getParameterValues(String name) { String[] values = super.getParameterValues(name); if (values != null) { int length = values.length; String[] escapseValues = new String[length]; for (int i = 0; i < length; i++) {escapseValues[i] = XssUtil.cleanXSS(values[i]); } return escapseValues; } return super.getParameterValues(name); } /** * 主要是針對HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE 獲取pathvalue的時候把原來的pathvalue經過xss過濾掉 */ @Override public Object getAttribute(String name) { // 獲取pathvalue的值 if (HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE.equals(name)) { Map uriTemplateVars = (Map) super.getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE); if (Objects.isNull(uriTemplateVars)) {return uriTemplateVars; } Map newMap = new LinkedHashMap<>(); uriTemplateVars.forEach((key, value) -> {if (value instanceof String) { newMap.put(key, XssUtil.cleanXSS((String) value));} else { newMap.put(key, value);} }); return newMap; } else { return super.getAttribute(name); } }}

XssStringJsonDeserializer代碼實現

/** * Created by wjy on 2020/11/5. * 基于xss的JsonDeserializer */public class XssStringJsonDeserializer extends JsonDeserializer<String> { @Override public Class<String> handledType() { return String.class; } @Override public String deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException { return XssUtil.cleanXSS(jsonParser.getValueAsString()); }}

XssUtil代碼實現

/** * Created by wjy on 2020/11/5. * xss工具類 */public class XssUtil { public static String cleanXSS(String value) { if (Objects.isNull(value)) { return value; } //在這里自定義需要過濾的字符 value = value.replaceAll('<', '& lt;').replaceAll('>', '& gt;'); value = value.replaceAll('(', '& #40;').replaceAll(')', '& #41;'); value = value.replaceAll('’', '& #39;'); value = value.replaceAll('eval((.*))', ''); value = value.replaceAll('['’][s]*javascript:(.*)['’]', ''''); value = value.replaceAll('<script>', ''); return value; }}

全局過濾器實現

@Componentpublic class SimpleCORSFilter implements Filter { @Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { // 在這里,使用我們實現的XSS過濾器 XssHttpServletRequestWrapper request =new XssHttpServletRequestWrapper((HttpServletRequest) req); HttpServletResponse response = (HttpServletResponse) res; response.setHeader('Access-Control-Allow-Origin', '*'); response.setHeader('Access-Control-Allow-Methods','POST, GET, PUT, OPTIONS, DELETE'); response.setHeader('Access-Control-Max-Age', '3600'); response.setHeader('Access-Control-Allow-Headers','Origin, X-Requested-With, Content-Type, Accept, token');chain.doFilter(request, response); } public void init(FilterConfig filterConfig) { } public void destroy() { }}

到此這篇關于Springboot實現XSS漏洞過濾的示例代碼的文章就介紹到這了,更多相關Springboot XSS漏洞過濾內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩国产欧美一区二区| 久久久久久久久成人| 国产精品成人a在线观看| 日韩免费精品| 日韩不卡一二三区| 欧美在线不卡| 国产亚洲欧美日韩精品一区二区三区 | 欧美激情在线精品一区二区三区| 久久精品xxxxx| 精品视频在线观看网站| 国产不卡一区| 欧美一区二区三区高清视频| 久久亚洲在线| 国产亚洲毛片| 久久不卡国产精品一区二区| 久久精品卡一| 国产欧美视频在线| 久久不射网站| 亚洲永久av| 日本不卡一二三区黄网| 亚洲精品成人| 欧美天堂一区| 亚洲免费福利一区| 精品一区视频| 中文字幕一区二区av| 天堂网av成人| 老司机精品久久| 久久国际精品| 亚洲黄色免费av| 日韩午夜精品| 亚洲午夜免费| 国产亚洲久久| 夜鲁夜鲁夜鲁视频在线播放| 日韩一区自拍| 丝袜a∨在线一区二区三区不卡| 日韩视频久久| 在线看片不卡| 国产精品丝袜xxxxxxx| 亚洲精品护士| 精品一区二区三区中文字幕视频| 不卡一区2区| 亚洲精品福利| 欧美一级精品| 久久97视频| 亚洲bt欧美bt精品777| 日韩欧美一区二区三区在线视频 | 日韩影院二区| 国产农村妇女精品一区二区| 亚洲一级淫片| 狠狠色综合网| 日韩制服丝袜av| 亚洲影院天堂中文av色| 国产精品99久久免费观看| 91精品国产乱码久久久久久久 | 欧美韩一区二区| 成人在线视频免费| 另类亚洲自拍| 国产精品99久久免费| 欧美91福利在线观看| 亚洲三级网址| 国产欧美日韩在线一区二区| 99热国内精品| 蜜臀av亚洲一区中文字幕| 国产激情一区| 欧美+亚洲+精品+三区| 国产亚洲久久| 国产v综合v| 久久亚洲欧洲| 国产精品国产三级国产在线观看| 国产综合婷婷| 国产精品3区| 欧美亚洲国产激情| 久久不见久久见免费视频7| 99久久夜色精品国产亚洲1000部| 在线观看精品| 麻豆精品国产91久久久久久| 国产视频一区二区在线播放| 欧美自拍一区| 色婷婷色综合| 亚洲天堂免费| 一区二区精品伦理...| 久久影院一区| 亚洲深夜av| 国产一区二区三区不卡av| 国产高清不卡| 亚洲一区二区三区四区五区午夜 | 国产精品网在线观看| 久久久成人网| 人人精品人人爱| 欧美日韩99| 99热国内精品| 色偷偷色偷偷色偷偷在线视频| 一二三区精品| 合欧美一区二区三区| 久久精品国产网站| 亚洲福利精品| 青青青免费在线视频| 中文日韩在线| 夜夜精品视频| 亚洲成人一区| 免费在线观看视频一区| 九色精品91| 日本久久一区| 中文字幕人成乱码在线观看| 亚洲国内精品| 欧美激情三区| 精品女同一区二区三区在线观看| 日韩手机在线| 久久精品国产68国产精品亚洲| 日本午夜精品| 视频一区日韩精品| 亚洲精品888| 婷婷激情久久| 精品九九久久| 在线视频免费在线观看一区二区| 国产h片在线观看| 国产日韩欧美一区二区三区在线观看| 亚洲国产日韩欧美在线| 精品国产亚洲日本| 91九色综合| 日韩精品高清不卡| 午夜精品婷婷| 精品久久97| 国产精品美女久久久久久不卡| 亚洲理论在线| 亚洲精品一级| 免费在线观看成人| 蜜臀久久99精品久久久久宅男| 欧美日韩国产高清电影| 日韩欧美少妇| 久久av超碰| 国产欧美欧美| 国产伦精品一区二区三区千人斩| 视频在线在亚洲| 久久av在线| 国内精品福利| 日本蜜桃在线观看视频| 欧美aa在线视频| 国产福利亚洲| 水蜜桃久久夜色精品一区| 国产高清精品二区| 国产伊人久久| 国产中文欧美日韩在线| 欧美aa在线观看| 久久麻豆视频| 亚洲成人二区| 中文字幕av一区二区三区四区| av免费不卡国产观看| 精品中文字幕一区二区三区 | av一区二区高清| 久久天堂精品| 99riav1国产精品视频| 一区福利视频| 日韩欧美2区| 人人爱人人干婷婷丁香亚洲| 超碰在线99| 国产一区二区三区探花| 91亚洲自偷观看高清| 亚洲91在线| 免费成人在线视频观看| 中文字幕成人| av一区二区高清| 中文字幕一区二区三区四区久久| 91久久精品无嫩草影院| 色爱综合网欧美| 亚洲精品在线影院| 国产精品日本一区二区三区在线 | 日韩亚洲在线| 国产精品99在线观看| 欧美成a人国产精品高清乱码在线观看片在线观看久| 国产黄大片在线观看| 欧洲毛片在线视频免费观看| 91精品91| 欧美日韩国产探花| 亚洲精品大片| 国产激情久久| 成人av二区| 视频一区日韩精品| 国产一区二区三区四区五区传媒| 毛片在线网站| 久久aⅴ国产紧身牛仔裤| 日韩av成人高清| 国产精品一级| 久久免费高清| 亚洲aa在线| 亚洲人成在线网站| 亚洲美洲欧洲综合国产一区| 国产三级一区| 精精国产xxxx视频在线野外| 亚洲一区二区成人| 激情综合五月| 在线视频免费在线观看一区二区| 国产精品久久久久久久久久妞妞| 成人在线超碰| 男人天堂欧美日韩| 国产精品亚洲欧美日韩一区在线| 欧美好骚综合网| 天使萌一区二区三区免费观看| 日本午夜精品久久久久| 久久一区二区三区喷水|