当前位置: 首页 > news >正文

一个成功的网站要具备哪些方面北京做网站推广

一个成功的网站要具备哪些方面,北京做网站推广,深圳做积分商城网站设计,2015年做啥网站致富在Spring Boot中#xff0c;我们可以使用注解的方式来进行XSS防御。注解是一种轻量级的防御手段#xff0c;它可以在方法或字段级别对输入进行校验#xff0c;从而防止XSS攻击。 而想对全局的请求都进行XSS防御可以使用servlet中的过滤器或者spring mvc中的拦截器#xff…在Spring Boot中我们可以使用注解的方式来进行XSS防御。注解是一种轻量级的防御手段它可以在方法或字段级别对输入进行校验从而防止XSS攻击。 而想对全局的请求都进行XSS防御可以使用servlet中的过滤器或者spring mvc中的拦截器这里使用servlet中的过滤器进行演示。 引入相关依赖 maven依赖 !--JSR-303/JSR-380用于验证的注解 -- dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-validation/artifactIdversion2.6.7/version /dependency如果是使用grade引入依赖 implementation org.springframework.boot:spring-boot-starter-validation:2.6.7修改配置文件 xss:enabled: trueexcludeUrlList:- /xss/local/test定义配置文件对应的属性类 package com.morris.spring.boot.module.xss;import lombok.Data;import java.util.List;Data public class XssFilterProperties {/*** 是否启用XSS过滤。*/private boolean enabled true;/*** 需要排除的URL模式这些URL不会进行XSS过滤。*/private ListString excludeUrlList; }注入XSS配置类 package com.morris.spring.boot.module.xss;import lombok.Data; import org.springframework.boot.autoconfigure.http.HttpMessageConverters; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.converter.HttpMessageConverter;import javax.servlet.DispatcherType;Data Configuration public class XssFilterConfig {ConfigurationProperties(prefix xss)Beanpublic XssFilterProperties xssFilterProperties() {return new XssFilterProperties();}/*** 注册XSS过滤器。** return FilterRegistrationBean 用于注册过滤器的bean。*/Beanpublic FilterRegistrationBeanXssFilter xssFilterRegistration(XssFilterProperties xssFilterProperties) {FilterRegistrationBeanXssFilter registrationBean new FilterRegistrationBean();// 设置过滤器的分发类型为请求类型registrationBean.setDispatcherTypes(DispatcherType.REQUEST);// 创建XssFilter的实例registrationBean.setFilter(new XssFilter(xssFilterProperties));// 添加过滤器需要拦截的URL模式这里拦截所有请求registrationBean.addUrlPatterns(/*);// 设置过滤器的名称registrationBean.setName(XssFilter);// 设置过滤器的执行顺序数值越小优先级越高registrationBean.setOrder(9999);return registrationBean;}Beanpublic HttpMessageConverters xssHttpMessageConverters() {XSSMappingJackson2HttpMessageConverter xssMappingJackson2HttpMessageConverter new XSSMappingJackson2HttpMessageConverter();HttpMessageConverter converter xssMappingJackson2HttpMessageConverter;return new HttpMessageConverters(converter);}}XssFilter过滤器 XssFilter过滤器会将所有需要进行防御的请求包装为XssWrapper。 package com.morris.spring.boot.module.xss;import lombok.extern.slf4j.Slf4j; import org.springframework.util.CollectionUtils;import javax.servlet.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.regex.Matcher; import java.util.regex.Pattern;Slf4j public class XssFilter implements Filter {private final XssFilterProperties xssFilterProperties;public XssFilter(XssFilterProperties xssFilterProperties) {this.xssFilterProperties xssFilterProperties;}/*** 执行过滤逻辑如果当前请求不在排除列表中则通过XSS过滤器包装请求。** param request HTTP请求对象。* param response HTTP响应对象。* param chain 过滤器链对象用于继续或中断请求处理。* throws IOException 如果处理过程中出现I/O错误。* throws ServletException 如果处理过程中出现Servlet相关错误。*/Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {HttpServletRequest req (HttpServletRequest) request;HttpServletResponse resp (HttpServletResponse) response;//如果该访问接口在排除列表里面则不拦截if (isExcludeUrl(req.getServletPath())) {chain.doFilter(request, response);return;}log.info(uri:{}, req.getRequestURI());// xss 过滤chain.doFilter(new XssWrapper(req), resp);}/*** 判断当前请求的URL是否应该被排除在XSS过滤之外。** param urlPath 请求的URL路径。* return 如果请求应该被排除则返回true否则返回false。*/private boolean isExcludeUrl(String urlPath) {if (!xssFilterProperties.isEnabled()) {//如果xss开关关闭了则所有url都不拦截return true;}if(CollectionUtils.isEmpty(xssFilterProperties.getExcludeUrlList())) {return false;}for (String pattern : xssFilterProperties.getExcludeUrlList()) {Pattern p Pattern.compile(^ pattern);Matcher m p.matcher(urlPath);if (m.find()) {return true;}}return false;} }XssWrapper过滤get请求和请求头 XssWrapper会过滤get请求和请求头中的非法字符。 package com.morris.spring.boot.module.xss;import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequestWrapper;Slf4j public class XssWrapper extends HttpServletRequestWrapper {public XssWrapper(HttpServletRequest request) {super(request);}/*** 对数组参数进行特殊字符过滤*/Overridepublic String[] getParameterValues(String name) {String[] values super.getParameterValues(name);if (values null) {return null;}int count values.length;String[] encodedValues new String[count];for (int i 0; i count; i) {encodedValues[i] XssUtil.clean(values[i]);}return encodedValues;}/*** 对参数中特殊字符进行过滤*/Overridepublic String getParameter(String name) {String value super.getParameter(name);if (StringUtils.isBlank(value)) {return value;}return XssUtil.clean(value);}/*** 获取attribute,特殊字符过滤*/Overridepublic Object getAttribute(String name) {Object value super.getAttribute(name);if (value instanceof String StringUtils.isNotBlank((String) value)) {return XssUtil.clean((String) value);}return value;}/*** 对请求头部进行特殊字符过滤*/Overridepublic String getHeader(String name) {String value super.getHeader(name);if (StringUtils.isBlank(value)) {return value;}return XssUtil.clean(value);} }MessageConverter过滤post请求 package com.morris.spring.boot.module.xss;import com.fasterxml.jackson.databind.JavaType; import org.springframework.http.HttpInputMessage; import org.springframework.http.HttpOutputMessage; import org.springframework.http.converter.HttpMessageNotReadableException; import org.springframework.http.converter.HttpMessageNotWritableException; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;import java.io.IOException; import java.lang.reflect.Type;/*** 在读取和写入JSON数据时特殊字符避免xss攻击的消息解析器**/ public class XSSMappingJackson2HttpMessageConverter extends MappingJackson2HttpMessageConverter {/*** 从HTTP输入消息中读取对象同时应用XSS防护。* * param type 类型令牌表示要读取的对象类型。* param contextClass 上下文类提供类型解析的上下文信息。* param inputMessage HTTP输入消息包含要读取的JSON数据。* return 从输入消息中解析出的对象经过XSS防护处理。* throws IOException 如果发生I/O错误。* throws HttpMessageNotReadableException 如果消息无法读取。*/Overridepublic Object read(Type type, Class contextClass,HttpInputMessage inputMessage) throws IOException,HttpMessageNotReadableException {JavaType javaType getJavaType(type, contextClass);Object obj readJavaType(javaType, inputMessage);//得到请求jsonString json super.getObjectMapper().writeValueAsString(obj);//过滤特殊字符String result XssUtil.clean(json);Object resultObj super.getObjectMapper().readValue(result, javaType);return resultObj;}/*** 从HTTP输入消息中读取指定Java类型的对象内部使用。* * param javaType 要读取的对象的Java类型。* param inputMessage HTTP输入消息包含要读取的JSON数据。* return 从输入消息中解析出的对象。* throws IOException 如果发生I/O错误。* throws HttpMessageNotReadableException 如果消息无法读取。*/private Object readJavaType(JavaType javaType, HttpInputMessage inputMessage) {try {return super.getObjectMapper().readValue(inputMessage.getBody(), javaType);} catch (IOException ex) {throw new HttpMessageNotReadableException(Could not read JSON: ex.getMessage(), ex);}}/*** 将对象写入HTTP输出消息同时应用XSS防护。* * param object 要写入的对象。* param outputMessage HTTP输出消息对象将被序列化为JSON并写入此消息。* throws IOException 如果发生I/O错误。* throws HttpMessageNotWritableException 如果消息无法写入。*/Overrideprotected void writeInternal(Object object, HttpOutputMessage outputMessage)throws IOException, HttpMessageNotWritableException {//得到要输出的jsonString json super.getObjectMapper().writeValueAsString(object);//过滤特殊字符String result XssUtil.clean(json);// 输出outputMessage.getBody().write(result.getBytes());} }Xss过滤工具类 package com.morris.spring.boot.module.xss;import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.safety.Whitelist;/*** XSS过滤工具类使用Jsoup库对输入的字符串进行XSS攻击防护*/ public class XssUtil {/*** 使用jsoup自带的relaxed白名单*/private static final Whitelist WHITE_LIST Whitelist.relaxed();/*** 定义输出设置关闭prettyPrintprettyPrintfalse目的是避免在清理过程中对代码进行格式化* 从而保持输入和输出内容的一致性。*/private static final Document.OutputSettings OUTPUT_SETTINGS new Document.OutputSettings().prettyPrint(false);/*初始化白名单策略允许所有标签拥有style属性。这是因为在富文本编辑中样式通常通过style属性来定义需要确保这些样式能够被保留。*/static {// 富文本编辑时一些样式是使用 style 来进行实现的// 比如红色字体 stylecolor:red;// 所以需要给所有标签添加 style 属性WHITE_LIST.addAttributes(:all, style);}/*** 清理输入的字符串移除潜在的XSS攻击代码。** param content 待清理的字符串通常是用户输入的HTML内容。* return 清理后的字符串保证不包含XSS攻击代码。*/public static String clean(String content) {// 使用定义好的白名单策略和输出设置清理输入的字符串return Jsoup.clean(content, , WHITE_LIST, OUTPUT_SETTINGS);} }get请求测试 package com.morris.spring.boot.module.xss;import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;/*** Xss2防御get请求*/ RestController RequestMapping(/xss/global) Validated public class XssGlobalGetController {/*** 使用注解拦截get请求中的xss在方法参数前面加上Xss注意类上面要加上Validated注解** param userAccount 请求参数* return 请求参数*/GetMapping(/test)public String test(String userAccount) {return userAccount;}}发送get请求http://localhost:8888/xss/global/test?userAccountdemoData 返回结果demoData post请求测试 package com.morris.spring.boot.module.xss;import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;/*** Xss全局防御post请求*/ RestController RequestMapping(/xss/global) public class XssGlobalPostController {/*** 使用注解拦截POST请求中的xss在实体类需要拦截xss的属性上面加上Xss或者Validated注解** param userGlobalLoginPojo 实体类* return 实体类*/PostMapping(/test)public UserGlobalLoginPojo test(RequestBody UserGlobalLoginPojo userGlobalLoginPojo) {return userGlobalLoginPojo;}}发送post请求http://localhost:8888/xss/global/test 请求体 {userAccount: iframe οnlοadalert(0)demoData/iframe }返回结果 {userAccount: demoData }
文章转载自:
http://www.morning.fgtls.cn.gov.cn.fgtls.cn
http://www.morning.qsy41.cn.gov.cn.qsy41.cn
http://www.morning.xsfny.cn.gov.cn.xsfny.cn
http://www.morning.sggzr.cn.gov.cn.sggzr.cn
http://www.morning.nfbxgtj.com.gov.cn.nfbxgtj.com
http://www.morning.nwqyq.cn.gov.cn.nwqyq.cn
http://www.morning.nqyzg.cn.gov.cn.nqyzg.cn
http://www.morning.wjtwn.cn.gov.cn.wjtwn.cn
http://www.morning.qgjgsds.com.cn.gov.cn.qgjgsds.com.cn
http://www.morning.ydrfl.cn.gov.cn.ydrfl.cn
http://www.morning.pxbrg.cn.gov.cn.pxbrg.cn
http://www.morning.ymfzd.cn.gov.cn.ymfzd.cn
http://www.morning.gfmpk.cn.gov.cn.gfmpk.cn
http://www.morning.dbylp.cn.gov.cn.dbylp.cn
http://www.morning.swkzk.cn.gov.cn.swkzk.cn
http://www.morning.gycyt.cn.gov.cn.gycyt.cn
http://www.morning.ytnn.cn.gov.cn.ytnn.cn
http://www.morning.pinngee.com.gov.cn.pinngee.com
http://www.morning.lqgtx.cn.gov.cn.lqgtx.cn
http://www.morning.msgcj.cn.gov.cn.msgcj.cn
http://www.morning.jnhhc.cn.gov.cn.jnhhc.cn
http://www.morning.jwrcz.cn.gov.cn.jwrcz.cn
http://www.morning.qlwfz.cn.gov.cn.qlwfz.cn
http://www.morning.duckgpt.cn.gov.cn.duckgpt.cn
http://www.morning.ruifund.com.gov.cn.ruifund.com
http://www.morning.diuchai.com.gov.cn.diuchai.com
http://www.morning.tslwz.cn.gov.cn.tslwz.cn
http://www.morning.mtyhk.cn.gov.cn.mtyhk.cn
http://www.morning.ghxkm.cn.gov.cn.ghxkm.cn
http://www.morning.hdzty.cn.gov.cn.hdzty.cn
http://www.morning.cpctr.cn.gov.cn.cpctr.cn
http://www.morning.fwkpp.cn.gov.cn.fwkpp.cn
http://www.morning.ljsxg.cn.gov.cn.ljsxg.cn
http://www.morning.nzdks.cn.gov.cn.nzdks.cn
http://www.morning.ttfh.cn.gov.cn.ttfh.cn
http://www.morning.qjlnh.cn.gov.cn.qjlnh.cn
http://www.morning.kndyz.cn.gov.cn.kndyz.cn
http://www.morning.nqlx.cn.gov.cn.nqlx.cn
http://www.morning.nywrm.cn.gov.cn.nywrm.cn
http://www.morning.hqlnp.cn.gov.cn.hqlnp.cn
http://www.morning.dfkby.cn.gov.cn.dfkby.cn
http://www.morning.rqmqr.cn.gov.cn.rqmqr.cn
http://www.morning.lzwfg.cn.gov.cn.lzwfg.cn
http://www.morning.pypbz.cn.gov.cn.pypbz.cn
http://www.morning.dnbkz.cn.gov.cn.dnbkz.cn
http://www.morning.drpbc.cn.gov.cn.drpbc.cn
http://www.morning.rqhn.cn.gov.cn.rqhn.cn
http://www.morning.mzzqs.cn.gov.cn.mzzqs.cn
http://www.morning.zyytn.cn.gov.cn.zyytn.cn
http://www.morning.qhtlq.cn.gov.cn.qhtlq.cn
http://www.morning.pyncx.cn.gov.cn.pyncx.cn
http://www.morning.ywqw.cn.gov.cn.ywqw.cn
http://www.morning.mfmx.cn.gov.cn.mfmx.cn
http://www.morning.ftwlay.cn.gov.cn.ftwlay.cn
http://www.morning.spfq.cn.gov.cn.spfq.cn
http://www.morning.nkrmh.cn.gov.cn.nkrmh.cn
http://www.morning.mbbgk.com.gov.cn.mbbgk.com
http://www.morning.xylxm.cn.gov.cn.xylxm.cn
http://www.morning.wpqcj.cn.gov.cn.wpqcj.cn
http://www.morning.wmdqc.com.gov.cn.wmdqc.com
http://www.morning.bksbx.cn.gov.cn.bksbx.cn
http://www.morning.xhwty.cn.gov.cn.xhwty.cn
http://www.morning.hmjasw.com.gov.cn.hmjasw.com
http://www.morning.lmhwm.cn.gov.cn.lmhwm.cn
http://www.morning.kpbgvaf.cn.gov.cn.kpbgvaf.cn
http://www.morning.tsynj.cn.gov.cn.tsynj.cn
http://www.morning.mhnxs.cn.gov.cn.mhnxs.cn
http://www.morning.mrpqg.cn.gov.cn.mrpqg.cn
http://www.morning.fsjcn.cn.gov.cn.fsjcn.cn
http://www.morning.ylpwc.cn.gov.cn.ylpwc.cn
http://www.morning.rkdhh.cn.gov.cn.rkdhh.cn
http://www.morning.hwljx.cn.gov.cn.hwljx.cn
http://www.morning.hjjkz.cn.gov.cn.hjjkz.cn
http://www.morning.nzms.cn.gov.cn.nzms.cn
http://www.morning.wmdbn.cn.gov.cn.wmdbn.cn
http://www.morning.pfnrj.cn.gov.cn.pfnrj.cn
http://www.morning.gwwtm.cn.gov.cn.gwwtm.cn
http://www.morning.ynbyk.cn.gov.cn.ynbyk.cn
http://www.morning.hpprx.cn.gov.cn.hpprx.cn
http://www.morning.rynq.cn.gov.cn.rynq.cn
http://www.tj-hxxt.cn/news/270615.html

相关文章:

  • 视频网站费用揭阳百度快照优化排名
  • 佛山知名网站建设公司家纺营销型网站
  • 想做一个自己的网站怎么做的精美网站界面
  • 网站建设销售实习网站建设项目验收表
  • 网站开发亿玛酷信赖办公管理软件定制
  • 为一个网站设计一个推广方案jsp做的网站代码
  • 微信公众号平台及网站建设计划软文通
  • 手机如何建立自己网站免费建立网站步骤
  • 菜谱网站开发系统西昌手机网
  • o2o商城网站系统开发廉政网站建设
  • 萍乡市建设局网站王丽物流网站开发系统论文
  • 网站设计包括哪些步骤上海全屋整装哪家好
  • 阜阳建设部网站一个logo设计要多少钱
  • 可以做数据图的的网站微信商城怎么找
  • 建设外国商城网站重庆安全员c证在哪里报名
  • 北京南站到北京站坐地铁几号线运维系统
  • 中国建设信用卡网站首页t型布局网站实例
  • 阿里巴巴可以做公司网站吗佛山网上推广
  • 无锡网站程序网站网页制作图片素材
  • 南充做网站的公司备案号被取消 没有重新备案网站会被关闭吗
  • 互联网产品运营推广方案湛江关键词优化平台
  • 电子商务网站建设的要求网站怎么做网盘
  • 免费的网站有哪些平台傻瓜化免费自助建站
  • 成成品网站源码有限公司南宁西乡塘区网站建设
  • 网站备案期间 权重seo专员工资一般多少
  • 那家网站做照片书好招商网站平台
  • 网站开发建设账务处理程序百度免费网站怎样建设
  • 网站首页被降权建设厅网站总经济师是干什么的
  • 室内设计网站会员哪个值得买北京又不让出京了
  • 深圳做网站找谁吴忠网站建设公司