我需要在登录时屏蔽敏感信息。我们使用集成框架提供的wire-tap进行日志记录,我们已经设计了许多接口,这些接口使用wire-tap进行日志记录。我们目前正在使用spring boot 2.1和spring集成。
我不知道这是否是一种花哨的方法,但我最终实现了某种“错误消息过滤器”,以屏蔽存在敏感标题的情况下的标题(这可以扩展到多个标题名称,但这给出了一个想法):
@Component
public class ErrorMessageFilter {
private static final String SENSITIVE_HEADER_NAME = "sensitive_header";
public Throwable filterErrorMessage(Throwable payload) {
if (payload instanceof MessagingException) {
Message<?> failedMessage = ((MessagingException) payload).getFailedMessage();
if (failedMessage != null && failedMessage.getHeaders().containsKey(SENSITIVE_HEADER_NAME)) {
MessageHeaderAccessor headerAccessor = new MessageHeaderAccessor(failedMessage);
headerAccessor.setHeader(SENSITIVE_HEADER_NAME, "XXX");
return new MessagingException(withPayload(failedMessage.getPayload()).setHeaders(headerAccessor)
.build());
}
}
return payload;
}
}
然后,在@Configuration
类中,添加了一种将我的过滤器与Spring Integration的LoggingHandler连接起来的方法:
@Autowired
public void setLoggingHandlerLogExpression(LoggingHandler loggingHandler, ErrorMessageFilter messageFilter) {
loggingHandler.setLogExpression(new FunctionExpression<Message<?>>((m) -> {
if (m instanceof ErrorMessage) {
return messageFilter.filterErrorMessage(((ErrorMessage) m).getPayload());
}
return m.getPayload();
}));
}
这也让我能够灵活地在处理错误消息的其他组件中重用我的过滤器(例如:向Zabbix发送错误通知等)。
附言:抱歉所有的
实例
和ifs
,但在某些层脏代码必须开始。
我希望您的所有集成流都能通过所提到的全球单一有线点击
记录。
无论如何,这只是另一个集成流的开始:它不仅仅是一个通道和它上的记录器。您真的可以构建任何复杂的有线接入流。
我的观点是,您可以在
记录通道适配器之前添加
转换器
,并以任何需要的方式屏蔽有效负载
和/或标题
。记录器将接收已屏蔽的数据。
另一种方法是在
log-表达式
中使用一些掩码功能。您可以在这里调用一些bean进行掩码或静态
实用程序:https://docs.spring.io/spring-integration/reference/html/#logging-channel-adapter
我需要能够在事件中搜索多种模式中的任何一种,并用掩码值替换模式中的文本。这是我们应用程序中的一项功能,旨在防止敏感信息落入日志。由于信息可能来自各种来源,因此对所有输入应用过滤器是不切实际的。除了日志记录之外,toString()还有其他用途,我不希望toString()对所有调用(仅日志记录)进行统一屏蔽。 我尝试在logback中使用%替换方法。xml: 这是成功的(在用字符实体替换尖括号之后
使用CXF调用SOAP Web服务后,CXF客户端记录SOAP请求消息,密码可见!我想从CXF客户端日志记录中隐藏密码等敏感数据。 以下是我在日志中得到的信息: 我只想将mypassword替换为code 我尝试了此解决方案,但它与我的CXF版本不兼容,因为它使用的是旧版本的CXF。 我真的看到了很多例子,一些扩展了LoggingOutInterceptor,其他扩展了AbstractSoapIn
本文向大家介绍Spring集成MyBatis框架,包括了Spring集成MyBatis框架的使用技巧和注意事项,需要的朋友参考一下 Java在写数据库查询时,我接触过四种方式: 1、纯Java代码,引用对应的数据库驱动包,自己写连接与释放逻辑(可以用连接池) 这种模式实际上性能是非常不错的,但是使用起来并不是非常方便:一是要手工为Connection做获取与释放,大量的冗余代码也容易出错;另一个是
问题内容: 我已经开发了一个Spring / JPA应用程序: 服务,存储库和域层即将完成 。 该 所缺的只是层是网络层 。我正在考虑将Playframework 2.0用于Web层,但不确定是否可以 在Playframework 2.0类中注入/使用spring bean 。 这可能吗?如果可以,怎么办? 问题答案: 您可以。已针对Play 2.5.x更新: https://github.com
本文向大家介绍PHP中使用strpos函数实现屏蔽敏感关键字功能,包括了PHP中使用strpos函数实现屏蔽敏感关键字功能的使用技巧和注意事项,需要的朋友参考一下 现在网络信息监管很严格,特别是屏蔽关键字。特别是现在WEB2.0时代,网站的内容几乎都是来自网民发布,站长管理即可。如果你希望别人在你站点禁止发布某个关键字,那么就需要预先做处理。用PHP做关键字屏蔽的功能样式有多种多样,如正则是最普遍
我的网站上有一个表格,我的客户用这个表格给我发信息。有时他们会在信息上写上他们的信用卡号。所以这真的很关键。我想掩盖这些信用卡号。但是当然卡号不会定期出现。 例1:1111222233334444 例2:4444 3333 2222 1111 例3:4444-3333-2222-1111 例4:4444-3333-2222-1111 例5:4444-3333-2222-1111 所以我可以屏蔽例如