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

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Springboot實(shí)現(xiàn)XSS漏洞過(guò)濾的示例代碼

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

前陣子做了幾個(gè)項(xiàng)目,終于開(kāi)發(fā)完畢,進(jìn)入了測(cè)試階段,信心滿滿將項(xiàng)目部署到測(cè)試環(huán)境,然后做了安全測(cè)評(píng)之后.....

Springboot實(shí)現(xiàn)XSS漏洞過(guò)濾的示例代碼 ​(什么!你竟然說(shuō)我代碼不安全???)

然后測(cè)出了 Xss漏洞 安全的問(wèn)題

解決方案

場(chǎng)景:可以在頁(yè)面輸入框輸入JS腳本, 攻擊者可以利用此漏洞執(zhí)行惡意的代碼

問(wèn)題演示

Springboot實(shí)現(xiàn)XSS漏洞過(guò)濾的示例代碼

Springboot實(shí)現(xiàn)XSS漏洞過(guò)濾的示例代碼

所以我們要對(duì)于前端傳輸?shù)膮?shù)做處理,做統(tǒng)一全局過(guò)濾處理

既然要過(guò)濾處理,我們首先需要實(shí)現(xiàn)一個(gè)自定義過(guò)濾器

總共包含以下四部分

XssUtil XssFilterAutoConfig XssHttpServletRequestWrapper XssStringfJsonDeserializer

Springboot實(shí)現(xiàn)XSS漏洞過(guò)濾的示例代碼

Springboot實(shí)現(xiàn)XSS漏洞過(guò)濾的示例代碼

最后我們需要在全局過(guò)濾器中使用我們實(shí)現(xiàn)的Xss自定義過(guò)濾器

代碼實(shí)現(xiàn)

XssFilterAtuoConfig實(shí)現(xiàn)代碼

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 自動(dòng)配置類 */@Configurationpublic class XssFilterAtuoConfig { /** * 注冊(cè)自定義過(guò)濾器 * @return */ @Bean public FilterRegistrationBean xssFiltrRegister() { FilterRegistrationBean registration = new FilterRegistrationBean(); //設(shè)置系統(tǒng)過(guò)濾器 (setFilter就是你所定義的過(guò)濾器filter類) registration.setFilter(new SimpleCORSFilter()); //過(guò)濾所有路徑 registration.addUrlPatterns('/*'); //過(guò)濾器名稱 registration.setName('XssFilter'); //優(yōu)先級(jí) registration.setOrder(1); return registration; } /** * 過(guò)濾JSON數(shù)據(jù) * @return */ @Bean @Primary public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() { SimpleModule module = new SimpleModule(); //自定義序列化過(guò)濾配置(XssStringJsonDeserializer), 對(duì)入?yún)⑦M(jìn)行轉(zhuǎn)譯 module.addDeserializer(String.class, new XssStringJsonDeserializer()); // 注冊(cè)解析器 ObjectMapper objectMapper = Jackson2ObjectMapperBuilder.json().build(); objectMapper.registerModule(module); return new MappingJackson2HttpMessageConverter(objectMapper); }}

XssHttpServletRequestWrapper實(shí)現(xiàn)代碼

/** * Created by wjy on 2020/11/5. * xss 包裝 */public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper { public XssHttpServletRequestWrapper(HttpServletRequest request) { super(request); } /** * 對(duì)header處理 * @param name * @return */ @Override public String getHeader(String name) { String value = super.getHeader(name); return XssUtil.cleanXSS(value); } /** * 對(duì)參數(shù)處理 * @param name * @return */ @Override public String getParameter(String name) { String value = super.getParameter(name); return XssUtil.cleanXSS(value); } /** * 對(duì)數(shù)值進(jìn)行處理 * @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); } /** * 主要是針對(duì)HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE 獲取pathvalue的時(shí)候把原來(lái)的pathvalue經(jīng)過(guò)xss過(guò)濾掉 */ @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代碼實(shí)現(xiàn)

/** * 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代碼實(shí)現(xiàn)

/** * Created by wjy on 2020/11/5. * xss工具類 */public class XssUtil { public static String cleanXSS(String value) { if (Objects.isNull(value)) { return value; } //在這里自定義需要過(guò)濾的字符 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; }}

全局過(guò)濾器實(shí)現(xiàn)

@Componentpublic class SimpleCORSFilter implements Filter { @Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { // 在這里,使用我們實(shí)現(xiàn)的XSS過(guò)濾器 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() { }}

到此這篇關(guān)于Springboot實(shí)現(xiàn)XSS漏洞過(guò)濾的示例代碼的文章就介紹到這了,更多相關(guān)Springboot XSS漏洞過(guò)濾內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Spring
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩欧美一区二区三区免费观看| 日韩成人a**站| 久久精品国产68国产精品亚洲| 欧美aa一级| 好吊日精品视频| 综合亚洲自拍| 国产精品流白浆在线观看| 美女尤物国产一区| 超级白嫩亚洲国产第一| 精品不卡一区| 群体交乱之放荡娇妻一区二区| 亚洲福利免费| 日韩精品久久久久久久软件91| 国产精品1区| 日本少妇一区| 蜜臀精品久久久久久蜜臀| 日韩1区2区3区| 久久久久免费| 亚洲欧美视频| 国产精品久久久网站| 日韩在线二区| 日韩专区在线视频| 国产激情久久| 久久精品国产www456c0m| 亚洲一区二区成人| 国产欧美日韩精品一区二区三区 | 中文另类视频| 一区二区三区四区日韩| 国产精品久久久久久久免费软件| 欧美日韩视频免费观看| 亚洲视频二区| 麻豆网站免费在线观看| 亚洲欧美日韩国产综合精品二区| 国产精品久av福利在线观看| 久久高清免费| 国产欧美亚洲精品a| 久久久久久黄| 日韩黄色av| 久久久成人网| 日韩不卡一二三区| 日韩精品影视| 国产精品成人一区二区网站软件| 亚洲精品一区二区妖精| 精品伊人久久| 日韩精品久久久久久| 亚洲高清不卡| 精品国产鲁一鲁****| 国产精品普通话对白| 欧美国产美女| 国产亚洲高清在线观看| 亚洲一区二区免费看| 色婷婷亚洲mv天堂mv在影片| 亚洲区欧美区| 国产99久久| 麻豆成人av在线| 亚洲精品字幕| 偷拍欧美精品| 亚洲伦乱视频| 精品国产一区二区三区噜噜噜| 蜜臀av国产精品久久久久| 91精品一区二区三区综合在线爱| 免费一级欧美片在线观看网站| 日韩一区中文| 欧美综合二区| 91久久久久| 91精品国产福利在线观看麻豆| 麻豆精品久久久| 欧美日本久久| 一本一道久久a久久| 婷婷激情综合| 欧美手机在线| 99tv成人| 欧美成a人免费观看久久| 精品国产亚洲一区二区在线观看| 亚洲精品少妇| 蜜桃91丨九色丨蝌蚪91桃色| 九一精品国产| 精品一区免费| 不卡视频在线| 91成人超碰| 亚洲夜间福利| 亚洲91精品| 三上悠亚国产精品一区二区三区 | 中文字幕成人| 在线一区免费观看| 国产高清一区二区| 成人精品天堂一区二区三区| 日本一区二区免费高清| 久久精品理论片| 久久不卡日韩美女| 国产精品一站二站| 国产精品2区| 精品久久国产一区| 你懂的国产精品| 麻豆一区在线| 在线看片福利| 人在线成免费视频| 久久精品91| 不卡av一区二区| 亚洲在线观看| 日韩中文字幕一区二区高清99| 亚洲制服欧美另类| 日韩在线成人| 日韩国产欧美三级| 国产精品网址| 美日韩一区二区三区| 久久久免费人体| 久久久久久色 | 伊人久久成人| 综合一区av| 国产免费av国片精品草莓男男| 欧美日韩一区二区三区不卡视频| 久久不见久久见国语| 国产美女高潮在线| 欧美日韩国产传媒| 在线免费观看亚洲| 国产欧美日韩在线观看视频| 久久精品亚洲一区二区| 日韩在线综合| 好看的亚洲午夜视频在线| 日韩精品免费视频一区二区三区 | 精品日韩一区| 激情综合网站| 日韩av三区| 久久久久久婷| 国产视频一区三区| 国产欧美欧美| 欧美日韩一区二区三区视频播放| 久久亚洲风情| 久久av电影| 国产一区久久| 欧美一区影院| 激情综合婷婷| 中文欧美日韩| 欧美极品中文字幕| 蜜桃成人av| 日本视频中文字幕一区二区三区| 精品久久久网| 香蕉久久夜色精品国产| 久久精品99久久久| 日韩一区三区| 日本在线不卡视频| 日本精品不卡| 久久精品99国产国产精| 日韩欧美精品| 日本欧美一区二区在线观看| 日韩一区亚洲二区| 亚欧成人精品| 高清久久精品| 无码日韩精品一区二区免费| 色婷婷亚洲mv天堂mv在影片| 亚洲精品在线二区| 91精品蜜臀一区二区三区在线 | 国产精品一区毛片| 狠狠爱www人成狠狠爱综合网| 国产美女撒尿一区二区| 1024精品一区二区三区| 热久久久久久| 国产一级久久| 成人欧美一区二区三区的电影| 在线免费观看亚洲| 激情婷婷亚洲| 精品日韩一区| 91精品日本| 香蕉久久国产| 婷婷国产精品| 亚洲精品88| 久久中文在线| 日韩综合一区二区| 中文日韩在线| 丝袜av一区| 国产一区二区三区久久| 日韩欧美中文字幕一区二区三区| 久久久蜜桃一区二区人| 国产精品毛片aⅴ一区二区三区| 久久国产精品久久久久久电车| 日韩欧美字幕| 国产在线日韩精品| 国产精品黄色| 91亚洲无吗| 免费久久99精品国产| 国产二区精品| 久久精品免费一区二区三区| 老牛国内精品亚洲成av人片 | 综合激情五月婷婷| 黑丝一区二区三区| 日韩欧美一区二区三区免费看| 美女视频黄免费的久久| 欧美天堂一区| 欧美一区在线观看视频| 日韩在线黄色| 一区二区国产精品| 老牛影视一区二区三区| 久久国产亚洲精品| 午夜精品成人av| 久久久久久黄| 亚洲91久久| 日韩中文影院| 日韩精品网站| 久久影院一区|