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

唯品会一家专门做特卖的网站手机版郴州市人口

唯品会一家专门做特卖的网站手机版,郴州市人口,湖南网络推广服务平台,wordpress 浏览器不居中背景 日志注入一般指的是恶意用户输出换行等内容,混淆正常的日志,导致排查问题是无法正确定位问题,因此,我们需要对要打印的日志内容进行过滤。 但是,如果是每个接口单独处理的话,成本较高,因此…

背景

日志注入一般指的是恶意用户输出换行等内容,混淆正常的日志,导致排查问题是无法正确定位问题,因此,我们需要对要打印的日志内容进行过滤。
但是,如果是每个接口单独处理的话,成本较高,因此,我们需要一个统一处理的机制。

当然,统一处理可能会误伤正常的日志,这个需要自己进行斟酌了。我们在绝大情况下不会在打印日志的内容中使用换行等特殊字符,所以这样处理我认为是比较稳妥的。

这个处理仅会对用户输入的参数进行处理,不会对堆栈的正常的内容处理,所以大部分的日志是可以正常打印出来的。

方案

springboot集成的logback,其配置文件是 org/springframework/boot/logging/logback/base.xml,其默认参数配置都在org/springframework/boot/logging/logback/defaults.xml。我们不打算修改这些配置,而是沿用。

我们对logback进行定制,spring集成的默认log_pattern为:-%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd'T'HH:mm:ss.SSSXXX}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr(%applicationName[%15.15t]){faint} %clr(${LOG_CORRELATION_PATTERN:-}){faint}%clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}},中间可以全部不管,输出的重点就是靠后部分的%m,这个是一个Converter,对消息进行处理,默认是不进行任何处理,直接输出原消息,我们对他进行定制。

我们自定义自己的Converter:


import ch.qos.logback.classic.pattern.ClassicConverter;
import ch.qos.logback.classic.spi.ILoggingEvent;
import org.slf4j.helpers.MessageFormatter;/*** @author */
public class LineSeparatorConverter extends ClassicConverter {@Overridepublic String convert(ILoggingEvent event) {Object[] argumentArray = event.getArgumentArray();// 没有用户传入的参数,直接返回if (argumentArray == null || argumentArray.length == 0) {return event.getFormattedMessage();}Object[] argumentArrayProcessed = new Object[argumentArray.length];for (int i = 0; i < argumentArray.length; i++) {Object o = argumentArray[i];if (o == null || o instanceof Throwable) {argumentArrayProcessed[i] = o;} else {String oString = o.toString();argumentArrayProcessed[i] = cleanLineSeparator(oString);}}return getFormattedMessage(event.getMessage(), argumentArrayProcessed);}public String getFormattedMessage(String message, Object[] argumentArray) {String formattedMessage;if (argumentArray != null) {formattedMessage = MessageFormatter.arrayFormat(message, argumentArray).getMessage();} else {formattedMessage = message;}return formattedMessage;}private String cleanLineSeparator(String line) {if (line == null || line.isEmpty()) {return line;}return line.replace("\n", "\\n").replace("\r", "\\r");}}

然后,声明logback-spring.xml,使用spring的默认配置,并且覆盖%m的默认Converter,改成我们自己的

<?xml version="1.0" encoding="UTF-8"?><configuration scan="true" scanPeriod="60 seconds" debug="false"><include resource="org/springframework/boot/logging/logback/base.xml"/><!-- 将默认的输出器改为自定义输出器,会替换掉换行符,防止日志注入 --><conversionRule conversionWord="m"converterClass="xxx.LineSeparatorConverter"/></configuration>

如果放到了resources目录下,该文件应该可以正常识别到,不需要额外配置。
如果日志处理是一个maven的子模块,那就手动声明一下文件位置
logging.config=classpath:logback-spring.xml
如果放到其他目录,写成:logging.config=file:/xxx/xxx/logback-spring.xml

http://www.sczhlp.com/news/98057/

相关文章:

  • 兰州做网站 东方商易厦门建设银行官方网站
  • 深圳房地产信息网官方网站网站的建设目标文档
  • 网站开发人员 组织架构做标书有哪些网站能接到
  • 做html网站模板下载网站开发开题报告
  • 网站建设 微盘好玩的传奇手游
  • 如何配置 网站二级域名设计师常用的图库网站
  • 广州黄埔区开发区建设局网站公司做官网要多少钱
  • 做财经直播网站商业信息平台
  • 定制网站建设托管i营销
  • 网站如何做付费wordpress 安装 空白页
  • 阿里巴巴网站开发网站地图 制作
  • eqw
  • 第一个c语言项目
  • GitHub Copilot 2025年8月最新更新!
  • NOIP 模拟赛十五
  • 网站链接结构手机交互网站
  • 网站建设栏目怎么介绍深圳网站设计师培训学校
  • 西红门做网站济南一哥网站建设
  • 织梦网站定时图片滤镜网站开发
  • 学校网站建设方面汇报哪家能建设网站
  • 做企业网站用什么程序网站首页怎么做
  • 局域网网站建设工具网站一般做多大的
  • 单位网站设计建议书开发网站建设的问卷调查
  • 自学做网站一般要多久wordpress汉化视频模板
  • 面试必备进程调度:fg,bg,jobs,ctrl+z,
  • 东莞容桂网站制作郑州网站推广费用
  • 星月网络公司做的网站不要域名能建网站么
  • 营销型网站sem投放策略网站备案主体信息变更
  • 完整教程:计算机毕设 java 多媒体教室管理系统 基于 Java+SSM 的多媒体教室运维平台 Java+MySQL 的教室预约与设备管理系统
  • 网站功能设计讲解天津市设计网站的公司