fastjson

解决使用Redis时配置 fastjson反序列化报错 com.alibaba.fastjson.JSONException: autoType is not support

此生再无相见时 提交于 2020-05-08 19:51:30
1.问题描述    在使用redis时,配置自定义序列化redisTemplate为 FastJsonRedisSerializer . 1 /** 2 * 自定义redis序列化器 3 */ 4 @SuppressWarnings("unchecked" ) 5 @Bean("redisTemplate" ) 6 public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory factory) { 7 8 RedisTemplate<Object, Object> template = new RedisTemplate<> (); 9 // 配置连接工厂 10 template.setConnectionFactory(factory); 11 12 // 使用fastJson序列化 13 FastJsonRedisSerializer fastJsonRedisSerializer = new FastJsonRedisSerializer(Object. class ); 14 15 // key的序列化采用StringRedisSerializer 16 StringRedisSerializer stringRedisSerializer = new

Fastjson AutoType

自作多情 提交于 2020-05-08 16:57:38
Fastjson 1.2.24特性 Fastjson 1.2.24有两个特性: 默认开启AutoType选项 在处理以@type形式传入的类的时候,会默认调用该类的共有set\get\is函数 于是乎,攻击者可以配合一些存在问题的类,来实现RCE,这也是Fastjson 系列的第一个RCE安全通告问题: https://github.com/alibaba/fastjson/wiki/security_update_20170315 随后,为例解决该漏洞问题,在1.2.25之后的版本,以及所有的.sec01后缀版本中,autotype功能是受限的,增加了checkAutoType采用白名单和黑名单的方式对加载的第三方类库进行检查,这也是后续一系列Fastjson黑名单绕过导致RCE的源头~ AutoType功能使用 在开发项目时,如果我们需要使用到AutoType是可以采用以下几种开启方式: 添加autotype白名单 添加白名单有三种方式,三选一,如下: 1、. 在代码中配置 ParserConfig.getGlobalInstance().addAccept("com.taobao.pac.client.sdk.dataobject."); 如果有多个包名前缀,分多次addAccept 2、加上JVM启动参数 -Dfastjson.parser.autoTypeAccept

什么是Json,Json如何使用

孤街浪徒 提交于 2020-05-08 05:46:21
   JavaScript Object Notation:javascript的对象表示法。   这是一种能传递对象的语法,可以是键值对,数组,以及其他对象。      轻量级的数据传输方法。   json格式:   { key :{ key : [ { key :value ,key :value } ] } },灵活组合。   { } : 表示一个集合,容器   [ ] :里面装数组,集合   键值对之间用冒号隔开,数组的元素用逗号隔开。      他不是面向对象的,但是较于javascript他更具有分析性,复用性。前后端都可使用。   json的值可以是:int float string boolean 数组 对象。       json方法:   JSON.parse():该方法用于解析JSON类型的字符串并且返回对应的值。   JSON.stringify():该方法同样返回与指定值对应的JSON字符串。      JavaScript可以用eval()方法将json文本转换为javascript对象。   var obj = eval ( " (" + json + " ) " );    注意:javascript的eval()方法可编译执行任何javascript代码但是这并不安全,如果使用json解析器将json转换为javascript就会更安全  

2020 java Dubbo面试题及答案(最全版本持续更新)

╄→гoц情女王★ 提交于 2020-05-07 12:55:05
前言 涵盖各大公司会问到的面试点,同时随着版本的升级,可能也会有一些面试题更新,也会同步保持更新,因为篇幅原因(其实是我懒,哈哈)所以列了一部分答案,所有的答案见下文,总共485页合计20个技术点,文末自取pdf. 1、为什么要用 Dubbo? 随着服务化的进一步发展,服务越来越多,服务之间的调用和依赖关系也越来越复杂,诞生了面向服务的架构体系(SOA),也因此衍生出了一系列相应的技术, 如对服务提供、服务调用、连接处理、通信协议、序列化方式、服务发现、服务路由、日志输出等行为进行封装的服务框架。就这样为分布式系统的服务治理框架就出现了,Dubbo 也就这样产生了。 2、Dubbo 的整体架构设计有哪些分层? 接口服务层(Service):该层与业务逻辑相关,根据 provider 和 consumer 的业务设计对应的接口和实现 配置层(Config):对外配置接口,以 ServiceConfig 和 ReferenceConfig 为中心 服务代理层(Proxy):服务接口透明代理,生成服务的客户端 Stub 和 服务端的 Skeleton,以 ServiceProxy 为中心,扩展接口为 ProxyFactory 服务注册层(Registry):封装服务地址的注册和发现,以服务 URL 为中心,扩展接口为 RegistryFactory、Registry

HandlerMethodArgumentResolver用于统一获取当前登录用户 — 转

十年热恋 提交于 2020-05-03 13:36:02
出处: HandlerMethodArgumentResolver用于统一获取当前登录用户 目录   一、最原始直接   二、AOP   三、拦截器+方法参数解析器     3.1 自定义权限拦截器      3.2 自定义参数注解     3.3 自定义方法参数解析器      3.4 配置MVC 环境:SpringBoot 2.0.4.RELEASE 需求:很多Controller方法,刚进来要先获取当前登录用户的信息,以便做后续的用户相关操作。 准备工作:前端每次请求都传token,后端封装一方法tokenUtils.getUserByToken(token),根据token解析得到currentUserInfo。   这是一个常见的业务需求,为实现这个需求,有以下几种解决方案: 一、最原始直接   即,每个Controller开始,先调用tokenUtils.getUserByToken(token),不够优雅。 二、AOP   AOP可以解决很多切面类问题,思路同Spring AOP来自定义注解实现审计或日志记录,将currentUser放到request里;比起拦截器稍重。 三、拦截器+方法参数解析器   使用mvc拦截器 HandlerInterceptor +方法参数解析器 HandlerMethodArgumentResolver 最合适。  

Json字符串与Object对象相互转换的几种方式

南笙酒味 提交于 2020-05-01 16:08:12
Json-Lib、Org.Json、Jackson、Gson、FastJson五种方式转换json类型 只列举了最省事的方式。不涉及复制情况和速度。 测试用例,一个User类,属性name,age,location。重写toString()。 public class User { private String name; private Integer age; private String location; public User() { } public User(String name) { this.name = name; } public User(String name, Integer age) { this.name = name; this.age = age; } public User(String name, Integer age, String location) { this.name = name; this.age = age; this.location = location; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return

spring boot2 修改默认json解析器Jackson为fastjson

自闭症网瘾萝莉.ら 提交于 2020-04-30 21:13:43
0、前言   fastjson是阿里出的,尽管近年fasjson爆出过几次严重漏洞,但是平心而论,fastjson的性能的确很有优势,尤其是大数据量时的性能优势,所以fastjson依然是我们的首选;spring boot默认的json解析器是Jackson,替换为fastjson很有必要; 1、替换方法 1.1、引入依赖,【 注意,1.2.61以下有严重高危漏洞,1.2.61修复,必须升级到1.2.61,目前最新版本为1.2.62 】 <!-- fastjson --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.62</version> </dependency> 1.2、配置 注意 :Springboot2.0以后,WebMvcConfigurerAdapter 过时了, 以前1版本继承WebMvcConfigurerAdapter 来实现的方法不推荐了。下面介绍两种配置方式,还有一种实现WebMvcConfigurationSupport的方式就不介绍了,道路千万条,选一条就足够了: 方式一(推荐):用bean替代默认解析器 package com.anson.config; import com.alibaba.fastjson

gateway nacos sentinel 三剑客强强组合

喜你入骨 提交于 2020-04-30 18:10:39
介绍 企业级微服务架构( 源码地址 ),Gateway是很重要的组件之一 spring cloud gateway 响应式网关,基于nacos实现动态网关,基于sentinel实现动态限流,sentinel基于nacos数据持久化 软件架构 版本号:gateway、nacos、sentinel的版本号参考父级项目 occo-parent 安装教程 启动注册中心和配置中心Nacos 文档地址: Nacos文档 下载地址: Nacos下载 启动限流服务Sentinel 文档地址: Sentinel文档 下载地址: Sentinel下载 启动网关 下载occo-gateway启动项目 启动gateway 在nacos中建《路由》配置: Data ID: gateway_router Group:DEFAULT_GROUP (默认的) 配置内容:[{"id":"user-server","uri":"lb://kb-user-center","order":0,"predicates":[{"args":{"pattern":"/user/**"},"name":"Path"}],"filters":[{"name":"StripPrefix","args":{"_genkey_0":"1"}}]},{"id":"sso-server","uri":"lb://kb-user-center

WebMvcConfigurerAdapter详解和过时后的替代方案

为君一笑 提交于 2020-04-30 13:56:10
一、什么是WebMvcConfigurerAdapter Spring内部的一种配置方式 采用JavaBean的形式来代替传统的xml配置文件形式进行针对框架个性化定制 二、WebMvcConfigurerAdapter常用的方法 /** 解决跨域问题 **/ public void addCorsMappings(CorsRegistry registry) ; /** 添加拦截器 **/ void addInterceptors(InterceptorRegistry registry); /** 这里配置视图解析器 **/ void configureViewResolvers(ViewResolverRegistry registry); /** 配置内容裁决的一些选项 **/ void configureContentNegotiation(ContentNegotiationConfigurer configurer); /** 视图跳转控制器 **/ void addViewControllers(ViewControllerRegistry registry); /** 静态资源处理 **/ void addResourceHandlers(ResourceHandlerRegistry registry); /** 默认静态资源处理器 **/ void

@JSONField、@JsonFormat、@DateTimeFormat对比

此生再无相见时 提交于 2020-04-30 01:12:51
@JSONField (format = "yyyy-MM-dd HH:mm:ss" ) @JSONField是fastjson的注解,作用是将日期按照指定的格式,格式化为字符串,返回给前端 @JsonFormat (timezone = "GMT+8" , pattern = "yyyy-MM-dd HH:mm:ss" ) @JsonFormat是Jackson的注解,和@JSONField功能相同,将日期按照指定格式进行格式化,模式的市区是GMT @DateTimeFormat (pattern = "yyyy-MM-dd HH:mm:ss" ) @DateTimeFormat是Spring的注解,作用是限制前端传入的时间格式,如果格式不匹配,则会抛出异常,可以理解成一种格式限制,不加该注解,Spring也会将前端传入的时间字符串解析成Date类型 来源: oschina 链接: https://my.oschina.net/simpleton/blog/4258740