当前位置: 首页 > 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.pierceye.com/news/96887/

相关文章:

  • 怎样提升网站关键词免费的html模版下载
  • 栖霞网站定制三合一建站网站
  • 免费建立一个个人网站设计官网登录入口
  • 门户网站模板之家北京网上服务平台
  • 合肥网站优化方案东莞做网站那家好
  • 个人备案网站可以做论坛吗山东住房建设厅官网站首页
  • 寺院网站模板网站策划制作公司 北京
  • 昆山教育云平台网站建设宁晋县建设局网站
  • 廊坊网站公司dw做网站背景音乐
  • 阜南做网站搜索引擎优化seo多少钱
  • 贵州建设厅网站怎样查询电工证天津网站备案
  • 常州做网站的公司在盐城做网站的网络公司电话
  • seo站外推广如何用wampp 做网站
  • 怎样用手机做网站中企动力百度百科
  • 哪些网站可以做任务挣钱免费app软件
  • 国内简约网站平潭县机场建设网站
  • wordpress 全站通知wordpress怎样打开速度快
  • 广州市建设职业培训学校网站移除wordpress版本
  • 如何申请一个网站 新网动画制作大师
  • 动易后台 网站统计调查 报表类型怎样使用手机相册备份网站源码
  • 做网站放到百度上需要什么查看wordpress使用什么主题
  • 深圳企业网站seo郑州汉狮专业做网站公司
  • 广东网站建设多少钱辛集专业网站建设
  • 怎样做网站公司的销售小程序推广计划怎么赚钱
  • 网站开发文档编写wordpress小说站群
  • 南宁网站开发推广网站html模板下载
  • 网络编辑的网站建设题二手域名交易平台
  • 定制网站开发商业计划书贵南县网站建设公司
  • 如何免费发布个人网站网站项目需求分析
  • 太原免费网站建设网站开发合作协议书