wechat

最新!Dubbo 远程代码执行漏洞通告,速度升级

落爺英雄遲暮 提交于 2020-08-11 04:16:37
0x01 漏洞背景 2020年06月23日, 360CERT监测发现 Apache Dubbo 官方 发布了 Apache Dubbo 远程代码执行的风险通告,该漏洞编号为 CVE-2020-1948,漏洞等级: 高危 。 Apache Dubbo 是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。 Apache Dubbo Provider 存在反序列化漏洞,攻击者可以通过RPC请求发送无法识别的服务名称或方法名称以及一些恶意参数有效载荷,当恶意参数被反序列化时,可以造成远程代码执行。 该漏洞的相关技术细节已公开。 对此,360CERT建议广大用户及时安装最新补丁,做好资产自查以及预防工作,以免遭受黑客攻击。 0x02 风 险等级 360CERT对该漏洞的评定结果如下 0x03 漏洞详情 Apache Dubbo Provider 存在反序列化漏洞,攻击者可以通过RPC请求发送无法识别的服务名称或方法名称以及一些恶意参数有效载荷,当恶意参数被反序列化时,可以造成远程代码执行。 0x04 影响版本 [Dubbo 2.7.0 – 2.7.6](http://mp.weixin.qq.com/s?__biz=MzI3ODcxMzQzMw==&mid=2247492659&idx=2&sn

备注

╄→гoц情女王★ 提交于 2020-08-11 02:28:56
分治法 找到缺失的整数: https://mp.weixin.qq.com/s?__biz=MzIxMjE5MTE1Nw==&mid=2653189951&idx=1&sn=0181c95484b67d108672235b14e5ebbb&chksm=8c9905e5bbee8cf3362ccc4c7e091caa18b5783183ce4475b6f011c09c1cb03847ea4cb5220c&scene=21#wechat_redirect 最小栈实践: https://mp.weixin.qq.com/s?__biz=MzIxMjE5MTE1Nw==&mid=2653190073&idx=1&sn=c20c002127e2ce3fe0c71a00aee70806&chksm=8c990563bbee8c75521c54ea8eb44b009ad07266b1e5fbf22926baf9a7b7302c7e4f7657dbb8&scene=21#wechat_redirect 桶排序: 无序数组排序后的最大相邻差值 https://mp.weixin.qq.com/s?__biz=MzIxMjE5MTE1Nw==&mid=2653190318&idx=1&sn=5f79c533a9b39104c8b939a6d6c27d07&chksm

请不要在 JDK 7+ 中使用这个 JSON 包了!

白昼怎懂夜的黑 提交于 2020-08-10 21:07:43
来源:大魔王mAysWINd www.cnblogs.com/mayswind/p/9222245.html Json-lib 介绍 Json-lib 是以前 Java 常用的一个 Json 库,最后的版本是 2.4,分别提供了 JDK 1.3 和 1.5 的支持,最后更新时间是 2010年12月14日。 虽然已经很多年不维护了,但在搜索引擎上搜索 " Java Json **"**等相关的关键词发现好像一直还有人在介绍和使用这个库。 项目官网是: http://json-lib.sourceforge.net/ 一句话结论 Json-lib 在通过字符串解析每一个 Json 对象时,会对当前解析位置到字符串末尾进行 substring 操作。 由于 JDK7 及以上的 substring 会完整拷贝截取后的内容,所以当遇到较大的 Json 数据并且含有较多对象时,会进行大量的字符数组复制操作,导致了大量的 CPU 和内存消耗,甚至严重的 Full GC 问题。 问题分析 某天发现线上生产服务器有不少 Full GC 问题,排查发现产生 Full GC 时某个老接口量会上涨,但这个接口除了解析 Json 外就是将解析后的数据存储到了缓存中。 遂怀疑跟接口请求参数大小有关,打日志发现确实有比一般请求大得多的 Json 数据,但也只有 1MB 左右。为了简化这个问题

触目惊心,超过 8000+ 漏洞 Redis 暴露在云端!

荒凉一梦 提交于 2020-08-10 18:21:50
本文授权转载自:FreeBuf.COM 参考来源:trendmicro,由Kriston编译 研究人员在云端发现约8000个不安全的Redis,这些Redis未使用TLS加密且未设密码保护。 Redis 设计之初是在受信任环境中使用,如果允许其在互联网或物联网中使用,攻击者会利用不安全的 Redis 服务器来发起攻击,例如SQL注入,跨站攻击,恶意文件上传、远程代码执行等。 什么是Redis? Redis 全称为Remote Dictionary Server,是一种开源内存数据存储结构,常用在数据库,数据缓存等。由于Redis驻留在内存中,它可以为需要处理大量请求的程序提供毫秒级的响应,例如实时聊天,金融服务,医疗保健和游戏等。 据报道,2018年Redis上运行着9亿个容器,其拥有广泛的用户群,官方镜像已被下载超过10亿次,同时被GitHub,Craigslist和Twitter等公司使用。 Redis 还可部署在云中,利用缓存节省云存储空间。 Redis分析 利用Shodan发现全球部署了8000多个不安全的 Redis 。其中一些部署在公共云中,如AWS、Azure和Google云。 下图只列出超过50个不安全 Redis 的云: 全球分布: Redis官方文档中指出: Redis 旨在受信任环境中的供受信任客户端访问。将 Redis

非常接地气的架构和分层方法,值得学习!

不打扰是莪最后的温柔 提交于 2020-08-10 17:59:28
作者:咖啡拿铁 https://juejin.im/post/5b44e62e6fb9a04fc030f216 1、背景 说起应用分层,大部分人都会认为这个不是很简单嘛 就controller,service, mapper三层。 看起来简单,很多人其实并没有把他们职责划分开,在很多代码中,controller做的逻辑比service还多,service往往当成透传了,这其实是很多人开发代码都没有注意到的地方,反正功能也能用,至于放哪无所谓呗。这样往往造成后面代码无法复用,层级关系混乱,对后续代码的维护非常麻烦。 的确在这些人眼中分层只是一个形式,前辈们的代码这么写的,其他项目代码这么写的,那么我也这么跟着写。但是在真正的团队开发中每个人的习惯都不同,写出来的代码必然带着自己的标签。 有的人习惯controller写大量的业务逻辑,有的人习惯在service中之间调用远程服务,这样就导致了每个人的开发代码风格完全不同,后续其他人修改的时候,一看,我靠这个人写的代码和我平常的习惯完全不同,修改的时候到底是按着自己以前的习惯改,还是跟着前辈们走,这又是个艰难的选择,选择一旦有偏差,你的后辈又维护你的代码的时候,恐怕就要骂人了。 所以一个好的应用分层需要具备以下几点: 方便后续代码进行维护扩展; 分层的效果需要让整个团队都接受; 各个层职责边界清晰。 2、如何进行分层 2.1、阿里规范

Spring Boot 打的包为什么能直接运行?

北战南征 提交于 2020-08-10 17:41:44
作者:Format http://fangjian0423.github.io/2017/05/31/springboot-executable-jar Spring Boot 提供了一个插件 spring-boot-maven-plugin 用于把程序打包成一个可执行的jar包。 在pom文件里加入这个插件即可: <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> 打包完生成的executable-jar-1.0-SNAPSHOT.jar内部的结构如下: ├── META-INF │ ├── MANIFEST.MF │ └── maven │ └── spring.study │ └── executable-jar │ ├── pom.properties │ └── pom.xml ├── lib │ ├── aopalliance-1.0.jar │ ├── classmate-1.1.0.jar │ ├── spring-boot-1.3.5.RELEASE.jar │ ├── spring-boot

全方位J2EE企业级开发解决方案,源码分享!

ⅰ亾dé卋堺 提交于 2020-08-10 13:29:09
关注+转发 之后私信我 【zheng源码】 获取该项目源码。 前言   该项目不仅仅是一个开发架构,而是努力打造一套从 前端模板 - 基础框架 - 分布式架构 - 开源项目 - 持续集成 - 自动化部署 - 系统监测 - 无缝升级 的全方位J2EE企业级开发解决方案。 项目介绍   基于Spring+SpringMVC+Mybatis分布式敏捷开发系统架构,提供整套公共微服务服务模块:内容管理、支付中心、用户管理(包括第三方)、微信平台、存储系统、配置中心、日志分析、任务和通知等,支持服务治理、监控和追踪,努力为中小型企业打造全方位J2EE企业级开发解决方案。 组织结构 zheng ├── zheng-common -- SSM框架公共模块 ├── zheng-admin -- 后台管理模板 ├── zheng-ui -- 前台thymeleaf模板[端口:1000] ├── zheng-config -- 配置中心[端口:1001] ├── zheng-upms -- 用户权限管理系统 | ├── zheng-upms-common -- upms系统公共模块 | ├── zheng-upms-dao -- 代码生成模块,无需开发 | ├── zheng-upms-client -- 集成upms依赖包,提供单点认证、授权、统一会话管理 | ├── zheng-upms-rpc

图解 Spring 循环依赖,写得太好了!

无人久伴 提交于 2020-08-10 09:36:08
作者:Vt juejin.im/post/5e927e27f265da47c8012ed9 前言 Spring 如何解决的循环依赖,是近两年流行起来的一道Java面试题。 其实笔者本人对这类框架源码题还是持一定的怀疑态度的。 如果笔者作为面试官,可能会问一些诸如“如果注入的属性为 null ,你会从哪几个方向去排查”这些场景题。 那么既然写了这篇文章,闲话少说,发车看看 Spring是如何解决的循环依赖 ,以及带大家看清循环依赖的本质是什么。 正文 通常来说,如果问Spring内部如何解决循环依赖,一定是单默认的 单例 Bean中,属性互相引用的场景。 比如几个Bean之间的互相引用: 甚至自己“循环”依赖自己: 先说明前提:原型(Prototype)的场景是不支持循环依赖的,通常会走到 AbstractBeanFactory 类中下面的判断,抛出异常。 if (isPrototypeCurrentlyInCreation(beanName)) { throw new BeanCurrentlyInCreationException(beanName); } 原因很好理解,创建新的A时,发现要注入原型字段B,又创建新的B发现要注入原型字段A... 这就套娃了, 你猜是先 StackOverflow 还是 OutOfMemory ? Spring怕你不好猜

你的 DevOps 大脑:思考方式和工作方式

前提是你 提交于 2020-08-10 09:11:38
本文首发于: Jenkins 中文社区 原文链接 作者:Helen Beal 译者:Renee 我经常不得不说的 DevOps 神话之一就是 DevOps 完全是关于自动化和工具的。尽管二者是达到 DevOps 目标的基本要素( DevOps 的目标是为了更快更安全地交付更有价值成果而优化从创意到价值实现的过程),但在 DevOps 的发展初期,Damon Edwards 和 John Willis 提出了 CALMS 这一缩写词来帮助解释有关 DevOps 的问题,其中字母 C 表示的文化也是一个重要元素。该想法得到了 Gartner 一篇文章的支持。该文章提到研究表明有 50%的受访者表示人的问题(与流程、技术和信息的问题相对)是目前采用 DevOps 原理和实践的最大障碍。我对自己客户的观察也支持这一想法,我的客户说文化是他们当下面临的最困难的挑战。 客户从一开始就这么说。大约七年前,当我们启动 Ranger4 的 DevOps 业务时,我们以为正在构建的是一个围绕软件和工具的业务。我们之前做么做过,并且这样做也是作为技术人员的合理选择。我们惊讶于客户一遍又一遍地问我们该如何改变文化。我们习惯于谈论技术;情感和感觉这些“软性”的东西是在饮水机旁闲谈的内容,或者用英式术语,说是酒吧里的话题。但是,当我们立即开始帮助客户后就迅速弄清了,文化可以被量化并文化生成的东西可以被确定

秒杀系统必须考虑的 3 个技术问题!

為{幸葍}努か 提交于 2020-08-10 07:00:53
作者:不远复 cnblogs.com/dreamworlds/p/5398468.html 1、并发队列的选择 Java的并发包提供了三个常用的并发队列实现,分别是:ArrayBlockingQueue、ConcurrentLinkedQueue 和 LinkedBlockingQueue 。 ArrayBlockingQueue是 初始容量固定 的阻塞队列,我们可以用来作为数据库模块成功竞拍的队列,比如有10个商品,那么我们就设定一个10大小的数组队列。 ConcurrentLinkedQueue使用的是CAS原语无锁队列实现,是一个异步队列,入队的速度很快,出队进行了加锁,性能稍慢。 LinkedBlockingQueue也是阻塞的队列,入队和出队都用了加锁,当队空的时候线程会暂时阻塞。 在请求预处理阶段,由于我们的系统入队需求要远大于出队需求,一般不会出现队空的情况,所以我们可以选择ConcurrentLinkedQueue来作为我们的请求队列实现。 2、请求接口的合理设计 一个秒杀或者抢购页面,通常分为2个部分,一个是静态的HTML等内容,另一个就是参与秒杀的Web后台请求接口。 通常静态HTML等内容,是通过CDN的部署,一般压力不大,核心瓶颈实际上在后台请求接口上。这个后端接口,必须能够支持高并发请求,同时,非常重要的一点,必须尽可能“快”