小编Tim*_*thy的帖子

Spring kafka setErrorHandler 已弃用替换(引导 2.6.4)

在 Spring Boot 2.6.4 上,此方法已被弃用。

public ConcurrentKafkaListenerContainerFactory<Object, Object> kafkaListenerContainerFactory(
            ConcurrentKafkaListenerContainerFactoryConfigurer configurer) {
        var factory = new ConcurrentKafkaListenerContainerFactory<Object, Object>();
        configurer.configure(factory, consumerFactory());

        // deprecated
        factory.setErrorHandler(new GlobalErrorHandler());

        return factory;
    }
Run Code Online (Sandbox Code Playgroud)

全局错误处理程序类

public class GlobalErrorHandler implements ConsumerAwareErrorHandler {

    private static final Logger log = LoggerFactory.getLogger(GlobalErrorHandler.class);

    @Override
    public void handle(Exception thrownException, ConsumerRecord<?, ?> data, Consumer<?, ?> consumer) {
        // my custom global logic (e.g. notify ops team via slack)
    }

}
Run Code Online (Sandbox Code Playgroud)

这个的替代样本是什么?文档说我应该使用setCommonErrorHandler,但是如何实现该CommonErrorHandler接口,因为那里没有可以重写的方法。

要点是,我必须根据特定条件向运营团队发送松弛通知(消息 tpye,可在 kafka 消息头中找到)

这并不是阻塞,只是一条烦人的已弃用消息。谢谢

apache-kafka spring-kafka

8
推荐指数
2
解决办法
1万
查看次数

Theme.of(context) 作为 const

我有几个地方有重复的代码,因为 BoxDecoration

decoration: BoxDecoration(
                    color: Theme.of(context).primaryColor,
                    borderRadius: BorderRadius.circular(5),
                    boxShadow: [
                      BoxShadow(
                          color: Theme.of(context).hintColor.withOpacity(0.15),
                          offset: Offset(0, 3),
                          blurRadius: 10)
                    ],
                  ),
Run Code Online (Sandbox Code Playgroud)

所以我想将其提取BoxDecoration到单独的 dart 文件中并重新使用。
就像是

static const boxDecoration = BoxDecoration(...);
Run Code Online (Sandbox Code Playgroud)

然后使用它

final container = Container(
decoration: boxDecoration
)
Run Code Online (Sandbox Code Playgroud)

但是我遇到了一些问题: 1. 如果我把它放在只包含常量的文件中,我仍然需要访问context,例如 in Theme.of(context).primaryColor,它只能从build(Context)方法 2 中检索。然后,我创建了一个新的无状态小部件

import 'package:flutter/material.dart';

class FlutterTemplateStyle extends StatelessWidget {
  static var boxDecoration;

  @override
  Widget build(BuildContext context) {
    boxDecoration = BoxDecoration(
      color: Theme.of(context).primaryColor,
      borderRadius: BorderRadius.circular(5),
      boxShadow: [
        BoxShadow(
            color: Theme.of(context).hintColor.withOpacity(0.15),
            offset: Offset(0, …
Run Code Online (Sandbox Code Playgroud)

dart flutter

2
推荐指数
1
解决办法
1371
查看次数

Kafka 日志压缩始终显示同一键的最后两条记录

发现这两个问题:这里这里,但我仍然不太明白。我仍然有(意外的?)行为。

我尝试使用此配置来记录紧凑的 kafka 主题

kafka-topics.sh --bootstrap-server localhost:9092 --create --partitions 1 --replication-factor 1 --topic test1 --config "cleanup.policy=compact" --config "delete.retention.ms=1000" --config "segment.ms=1000" --config "min.cleanable.dirty.ratio=0.01" --config "min.compaction.lag.ms=500"

然后我发送这些消息,每条消息至少有1秒的间隔

A: 3
A: 4
A: 5
B: 10
B: 20
B: 30
B: 40
A: 6
Run Code Online (Sandbox Code Playgroud)

我期望的是几秒钟后(配置为 1000?),当我运行时kafka-console-consumer.sh --bootstrap-server localhost:9092 --property print.key=true --topic test1 --from-beginning,我应该得到

A: 6
B: 40
Run Code Online (Sandbox Code Playgroud)

相反,我得到:

A: 5
B: 40
A: 6
Run Code Online (Sandbox Code Playgroud)

如果我发布另一条消息B:50并运行消费者,我得到:

B: 40
A: 6
B: 50
Run Code Online (Sandbox Code Playgroud)

而不是预期的

A: 6
B: …
Run Code Online (Sandbox Code Playgroud)

apache-kafka

2
推荐指数
1
解决办法
2377
查看次数

CSRF Double Submit Cookie 基本上“不安全”

来自OWASP 页面:CSRF 攻击有效,因为浏览器请求会自动包含所有 cookie,包括会话 cookie。

为了防止它,我们可以使用双重提交 cookie 哈希。
在我找到的一些示例代码中,基本上找到了这个算法。

受害者访问应用程序:

  1. 后端:生成登录cookie和与登录cookie相关的哈希字符串
  2. 前端:将哈希字符串存储到第二个 cookie 中(比如:CSRF-token cookie)
  3. 前端(安全):发送带有登录 cookie 和 CSRF HTTP 标头的请求,其中标头值是从 CSRF-token cookie 中提取的。

攻击者:

  1. 使用某种社交媒体工程让用户点击恶意链接,这个恶意链接使用会话cookie。
  2. 攻击者然后窃取此会话 cookie 以受害者身份登录

双重提交 cookie 应该可以防止这种攻击,因为攻击者还需要在 HTTP 标头中提供有效的 CSRF 令牌。

我还是不明白:如果浏览器请求自动包含所有 cookie,这意味着点击恶意链接,登录 cookie 和 CSRF-token cookie 也会包含在内,攻击者会窃取它们。
那么攻击者只需要从CSRF-token cookie中提取值,并创建自己的API访问,使用他窃取的登录cookie和提取值的CSRF HTTP标头?

我错过了什么吗?

谢谢

security api csrf

2
推荐指数
2
解决办法
930
查看次数

标签 统计

apache-kafka ×2

api ×1

csrf ×1

dart ×1

flutter ×1

security ×1

spring-kafka ×1