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

企业网站建设的建议怎样切图做网站

企业网站建设的建议,怎样切图做网站,亚洲和欧洲,效果好网站建设哪家好文章目录 前言一、使用注解预防1. 添加依赖2. 自定义注解3. 自定义校验逻辑4. 使用 二、使用过滤器1. 添加配置2. 创建配置类3. 创建过滤器4. 创建过滤器类5. 使用 前言 xss攻击时安全领域中非常常见的一种方法#xff0c;保证我们的系统安全是非常重要的 xss攻击简单来说就… 文章目录 前言一、使用注解预防1. 添加依赖2. 自定义注解3. 自定义校验逻辑4. 使用 二、使用过滤器1. 添加配置2. 创建配置类3. 创建过滤器4. 创建过滤器类5. 使用 前言 xss攻击时安全领域中非常常见的一种方法保证我们的系统安全是非常重要的 xss攻击简单来说就是在用户输入内容中添加脚本 script … script 这里面可能包含获取cookie 一、使用注解预防 1. 添加依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-validation/artifactId /dependency2. 自定义注解 Retention(RetentionPolicy.RUNTIME) Target(value {ElementType.METHOD, ElementType.FIELD, ElementType.CONSTRUCTOR, ElementType.PARAMETER}) Constraint(validatedBy {XssValidator.class}) public interface Xss {String message() default 不允许任何脚本运行;Class?[] groups() default {};Class? extends Payload[] payload() default {};}3. 自定义校验逻辑 public class XssValidator implements ConstraintValidatorXss, String {Overridepublic boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) {// 这里用的hutool的工具类return !ReUtil.contains(HtmlUtil.RE_HTML_MARK, value);}}4. 使用 创建实体类 Data public class Book {private Long id;private String name;Xssprivate String content; }创建book控制器 Validated RestController RequestMapping(/book) public class BookController {PostMappingpublic void save(Validated RequestBody Book book){System.out.println(book);} }发送请求 可以看到系统抛出了异常这样我们就成功了使用注解完成了脚本验证 二、使用过滤器 注解的方式需要一个一个的添加这显然是不太方便的。我们可以通过过滤器的方式对前端传递过来的参数进行统一处理 1. 添加配置 # 防止XSS攻击 xss:# 过滤开关enabled: true# 排除链接多个用逗号分隔excludes: # 匹配链接urlPatterns: /book/*2. 创建配置类 Data Component ConfigurationProperties(prefix xss) public class XssProperties {/*** 过滤开关*/private String enabled;/*** 排除链接多个用逗号分隔*/private String excludes;/*** 匹配链接*/private String urlPatterns;}3. 创建过滤器 Configuration public class FilterConfig {Autowiredprivate XssProperties xssProperties;// 关闭校验注解SuppressWarnings({rawtypes, unchecked})Bean// xss.enabledtrue时注入beanConditionalOnProperty(value xss.enabled, havingValue true) public FilterRegistrationBean xssFilterRegistration() {// 创建过滤器注册器FilterRegistrationBean registration new FilterRegistrationBean();// 设置运行类型registration.setDispatcherTypes(DispatcherType.REQUEST);// 设置过滤器registration.setFilter(new XssFilter());// 添加拦截路径registration.addUrlPatterns(StrUtil.split(xssProperties.getUrlPatterns(), StrUtil.C_COMMA).toArray(String[]::new));registration.setName(xssFilter);// 设置优先级为最高registration.setOrder(FilterRegistrationBean.HIGHEST_PRECEDENCE);// 添加自定义参数MapString, String initParameters new HashMapString, String();initParameters.put(excludes, xssProperties.getExcludes());registration.setInitParameters(initParameters);return registration;} }4. 创建过滤器类 public class XssFilter implements Filter {/*** 排除链接*/public ListString excludes new ArrayList();/*** 初始化的时候将排除连接根据,分割添加到excludes中* param filterConfig* throws ServletException*/Overridepublic void init(FilterConfig filterConfig) throws ServletException {String tempExcludes filterConfig.getInitParameter(excludes);if (StrUtil.isNotBlank(tempExcludes)) {String[] url tempExcludes.split(StrUtil.COMMA);excludes.addAll(Arrays.asList(url));}}Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {HttpServletRequest req (HttpServletRequest) request;HttpServletResponse resp (HttpServletResponse) response;if (handleExcludeURL(req, resp)) {chain.doFilter(request, response);return;}XssHttpServletRequestWrapper xssRequest new XssHttpServletRequestWrapper((HttpServletRequest) request);chain.doFilter(xssRequest, response);}/*** 判断是否为排除过滤路径* param request* param response* return*/private boolean handleExcludeURL(HttpServletRequest request, HttpServletResponse response) {String url request.getServletPath();String method request.getMethod();// GET DELETE 不过滤if (method null || HttpMethod.GET.matches(method) || HttpMethod.DELETE.matches(method)) {return true;}return matches(url, excludes);}public static boolean matches(String str, ListString strs) {if (StrUtil.isBlank(str) || CollUtil.isEmpty(strs)) {return false;}for (String pattern : strs) {if (isMatch(pattern, str)) {return true;}}return false;}public static boolean isMatch(String pattern, String url) {AntPathMatcher matcher new AntPathMatcher();return matcher.match(pattern, url);}Overridepublic void destroy() {} }public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper {/*** param request*/public XssHttpServletRequestWrapper(HttpServletRequest request) {super(request);}/*** 将url拼接的参数进行脚本过滤* param name* return*/Overridepublic String[] getParameterValues(String name) {String[] values super.getParameterValues(name);if (values ! null) {int length values.length;String[] escapesValues new String[length];for (int i 0; i length; i) {// 防xss攻击和过滤前后空格escapesValues[i] HtmlUtil.cleanHtmlTag(values[i]).trim();}return escapesValues;}return super.getParameterValues(name);}/*** 对body的脚本参数进行过滤* return* throws IOException*/Overridepublic ServletInputStream getInputStream() throws IOException {// 非json类型直接返回if (!isJsonRequest()) {return super.getInputStream();}// 为空直接返回String json StrUtil.str(IoUtil.readBytes(super.getInputStream(), false), StandardCharsets.UTF_8);if (StringUtils.isEmpty(json)) {return super.getInputStream();}// xss过滤json HtmlUtil.cleanHtmlTag(json).trim();byte[] jsonBytes json.getBytes(StandardCharsets.UTF_8);final ByteArrayInputStream bis IoUtil.toStream(jsonBytes);return new ServletInputStream() {Overridepublic boolean isFinished() {return true;}Overridepublic boolean isReady() {return true;}Overridepublic int available() throws IOException {return jsonBytes.length;}Overridepublic void setReadListener(ReadListener readListener) {}Overridepublic int read() throws IOException {return bis.read();}};}/*** 是否是Json请求*/public boolean isJsonRequest() {String header super.getHeader(HttpHeaders.CONTENT_TYPE);return StringUtils.startsWithIgnoreCase(header, MediaType.APPLICATION_JSON_VALUE);} }5. 使用 发送请求 可以看到传递的脚本被成功过滤掉
http://www.zqtcl.cn/news/96887/

相关文章:

  • 有哪些做兼职的设计网站有哪些工作可以用asp做哪些网站
  • 装修网站推广方案东莞网站建设0086
  • 知名营销网站开发高端网站建设如何收费
  • 佛山网站建设邓先生沈阳做网站找黑酷科技
  • 网站建设 排名下拉请教个人主页网站怎么做啊
  • 揭阳网站制作教程安阳seo公司
  • 网站运营管理教材wordpress 评论框插件
  • 免费做手机网站有哪些网页怎么制作链接
  • 浙江省建设工程质量协会网站wordpress只在首页设置关键词
  • 网站开发选题申请理由东莞网站建议
  • 阿里巴巴国际站运营培训商务网站的建设步骤
  • 有哪几个平台做网站专业的网站建设流程
  • 网站的回到顶部怎么做字体艺术设计在线生成
  • 物流营销型网站案例分析渭南专业做网站
  • 织梦音乐网站接推广任务的平台
  • 网站建设设计团队平面设计主要做什么ui
  • 站长工具seo综合查询广告和京东一样的网站
  • 柳州做网站的企业做黑彩网站
  • 商城网站开发那家好网站建设知识平台
  • 莱州网站定制flash网站cms
  • 经营范围里的网站建设直播系统程序
  • 58同城类似的网站开发wordpress 地方生活
  • wordpress 七牛ossseo系统
  • 郑州做网站 熊掌号太原今天最新通知
  • 文章网站如何与压力做足球比赛直播间在线观看
  • 越秀网站建设优化呼和浩特住房和城乡建设部网站
  • 河南省路桥建设集团网站建网站公司郑州
  • 海沧做网站深圳外贸招聘
  • 网站建设置顶多少钱翻译成英文
  • 柳州正规网站制作公司哪家好怎么学好网站建设