Spring Cloud

有效提高java编程安全性的12条黄金法则

廉价感情. 提交于 2020-08-11 18:59:57
安全性是软件开发中最复杂,最广泛和最重要的考量之一。Java是具有许多内置安全性功能的开发平台,java在长期的发展过程中,已经经过了很多高强度的安全测试,并经常更新安全漏洞。并且Java生态系统还包括用于分析和报告安全性问题的各种工具。 但是,即使有了可靠的开发平台,也同样要保持警惕。应用程序开发是一项复杂的工作,漏洞会隐藏起来不易发现。程序员应该在应用程序开发的每个阶段都考虑安全性,从类级别的代码编程到API端点授权都应该被考虑在内。 以下为大家介绍的基本规则,可以为构建更安全的Java应用程序奠定良好的基础。供参考学习! Java安全规则1:编写简单而强大的Java代码 漏洞喜欢隐藏在复杂代码中,因此在不牺牲功能的情况下使代码尽可能简单。在代码中公开尽可能少的信息,隐藏实施细节,支持可维护和安全的代码。下面三个技巧将大大有助于编写安全的Java代码: 充分利用 Java的访问修饰符 。为类,方法及其属性声明访问级别,可以设为private的所有内容都应该为private。 避免过度使用反射和内省 。在某些情况下,应该使用这种高级技术,但是在大多数情况下,您应该避免使用它们。使用反射消除了强类型化,可能会给代码引入漏洞和不稳定性。将类名与字符串进行比较容易出错,并且很容易导致名称空间冲突。 始终定义尽可能小的API和接口 。解耦组件并使它们在尽可能小的区域内交互

记一次token安全认证的实践

帅比萌擦擦* 提交于 2020-08-11 18:50:29
阅读此文前请先阅读上一篇 SpringBoot整合JWT实现用户认证了解JWT 。 背景介绍: 因项目需求,有PC端 APP端和小程序端,但登陆接口是同一个,然而微服务也无法使用传统的session解决用户登录问题(注意这里是传统的session不是spring session),使用户信息在其他服务共享。 如此一来就想到了token安全认证,而JWT生成token可以包含用户信息,也就果断选择了JWT作为SpringCloud gateway网关的token校验工具,这样,我们便可以直接解析token获取用户信息了。 具体实现思路: 让JWT在其他所有服务可以共同使用,父工程需要引入JWT jar。避免在其他服务重复引入。 如何使用JWT生成token。 如何解析token。 如何让网关拦截用户请求校验token。 如何避免首次登录被网关拦截。 代码实现: 1.创建SpringCloud项目 SpringCloud子项目包含 eureka,gateway,auth三个工程,父工程maven依赖如下。 <dependency> <groupId>com.nimbusds</groupId> <artifactId>nimbus-jose-jwt</artifactId> <version>6.0</version> </dependency> 2

精讲RestTemplate第1篇-在Spring或非Spring环境下如何使用

痴心易碎 提交于 2020-08-11 17:59:21
一、什么是 RestTemplate? RestTemplate 是执行HTTP请求的同步阻塞式的客户端,它在HTTP客户端库(例如JDK HttpURLConnection,Apache HttpComponents,okHttp等)基础封装了更加简单易用的模板方法API。也就是说RestTemplate是一个封装,底层的实现还是java应用开发中常用的一些HTTP客户端。但是相对于直接使用底层的HTTP客户端库,它的操作更加方便、快捷,能很大程度上提升我们的开发效率。 RestTemplate 作为spring-web项目的一部分,在Spring 3.0版本开始被引入。RestTemplate类通过为HTTP方法(例如GET,POST,PUT,DELETE等)提供重载的方法,提供了一种非常方便的方法访问基于HTTP的Web服务。如果你的Web服务API基于标准的RESTful风格设计,使用效果将更加的完美。 根据Spring官方文档及源码中的介绍,RestTemplate在将来的版本中它可能会被弃用,因为他们已在Spring 5中引入了WebClient作为非阻塞式Reactive HTTP客户端。但是RestTemplate目前在Spring 社区内还是很多项目的“重度依赖”,比如说Spring Cloud。另外,RestTemplate说白了是一个客户端API封装

【Java Spring Cloud 实战之路】- 使用Nacos和网关中心的创建

孤街醉人 提交于 2020-08-11 16:33:35
0. 前言 在上一节中,我们创建了一个项目架构,后续的项目都会在那个架构上做补充。 1. Nacos 1.1 简介 Nacos可以用来发现、配置和管理微服务。提供了一组简单易用的特性集,可以快速实现动态服务发现、服务配置、服务元数据及流量管理。 Nacos用来更敏捷和容易地构建、交付和管理微服务平台。Nacos是构建以”服务“为中心的现代应用构架(例如微服务范式、云原生范式)的服务基础设置。 也就是通常我们所说的配置中心和服务发现中心。 1.2 搭建和启动 Nacos目前版本不支持以Spring boot的形式创建服务,必须以一个Java包的形式单独运行或者以Docker服务的形式运行,我们大概讲解一下本地运行。 下载安装包: curl https://github.com/alibaba/nacos/releases/download/1.2.1/nacos-server-1.2.1.zip unzip nacos-server-$version.zip 或者 tar -xvf nacos-server-$version.tar.gz cd nacos/bin 使用源码安装: git clone https://github.com/alibaba/nacos.git cd nacos/ mvn -Prelease-nacos -Dmaven.test.skip=true

基于Openresty+CEPH实现海量数据管理系统

為{幸葍}努か 提交于 2020-08-11 16:07:38
「持续更新中,欢迎关注...」 1. 需求: 作为一家专注于三维高精度地图服务的公司,有海量(PB级)的原始数据、中间数据、成功数据,需要存储、管理、并定期归档。 按项目管理数据,数据分类航飞数据、控制点数据、中间数据、成果数据、其他数据。数据来源包括无人机数据、载荷数据、地面站数据、人工打点数据等。不同渠道汇集而来的数据。 采用类似百度网盘的形式,上传、下载,支持断点续传、进度跟踪。 支持细化到文件级别的权限控制,以及更多的文件(夹)属性。 2. 分析: 系统重点在于数据存储的选型,支持海量数据的存储,能够支持在复杂网络下的数据上传。选用CEPH作为数据存储,RGW对象存储,S3协议上传下载,完美支持分片和断点续传。 系统难点在于文件级别的业务权限控制,以及文件(夹)更多的属性支持。CEPH RGW本身支持权限控制,但是无法和业务权限做对接。对象存储本身没有文件夹的概念,无法对文件夹做分类、数量展示、大小展示。所以实现自定义索引服务,CEPH主要负责存储,自定义索引服务实现展示与查询。 3. 实现 系统重点在于海量数据上传的可靠性与海量数据索引的管理。 3.1 架构 上传助手就是类百度网盘的桌面端软件,采用 Electron JS )实现。主要实现功能:项目展示、上传、下载。 业务层包括网关服务、账号服务、项目服务、文件索引服务等。采用Java + Spring Boot +

Spring Cloud 和 Dubbo 哪个会被淘汰?

走远了吗. 提交于 2020-08-11 16:05:53
今天在知乎上看到了这样一个问题:Spring Cloud 和 Dubbo哪个会被淘汰?看了几个回答,都觉得不在点子上,所以要么就干脆写篇小文瞎逼叨一下。 简单说说个人观点 我认为这两个框架大概率会长期都存在。 时至今日,这两个框架放到现在,已经不存在谁取代谁这一说了。由于Spring Cloud Alibaba的出现,Dubbo已经很好的融入到了Spring Cloud体系,所以围绕Spring Cloud生态的各种周边产品都是可以无缝整合到一起来玩的。 Dubbo无缝整合Spring Cloud生态是啥意思呢?主要两方面: 如果你原来是Dubbo用户,那么现在可以把Spring Cloud引入进来。轻松便捷地整合Spring Cloud的配置中心、注册中心以及诸如分布式跟踪等好用的周边产品来管理你的分布式服务集群,与其他Spring Cloud Netflix用户享受同等的生态优势。 如果你原来不是Dubbo用户,但是你的场景在使用HTTP调用时候觉得不够效率不够经济,那么就可以考虑引入Dubbo,来提升你服务减调用的RPC性能。 到这里,可能有的看官要说了,你都是站在融合的角度来说的,我就是不喜欢Dubbo那种接口依赖的方式,坚决捍卫Spring Cloud原始生态! 行!这种坚持也是可以的,并没有什么错,通过HTTP契约方式管理服务接口,不用接口提供方的JAR

双剑合璧 Nacos 结合 Sentinel 实现流量安全控制

时光怂恿深爱的人放手 提交于 2020-08-11 14:51:04
  Alibaba Sentinel 是一款高性能且轻量级的流量控制、熔断降级解决方案。是面向分布式服务架构的高可用流量控制组件。   Sentinel 官网: https://sentinelguard.io/zh-cn/   Github: https://github.com/alibaba/Sentinel    Sentinel 是什么      随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 主要以流量为切入点,从流量控制、熔断降级、系统自适应保护等多个维度来保障微服务的稳定性。    Sentinel 具有以下特征: 丰富的应用场景 :Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。 完备的实时监控 :Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据,甚至 500 台以下规模的集群的汇总运行情况。 广泛的开源生态 :Sentinel 提供开箱即用的与其它开源框架/库的整合模块,例如与 Spring Cloud、Dubbo、gRPC 的整合。您只需要引入相应的依赖并进行简单的配置即可快速地接入 Sentinel。 完善的 SPI 扩展点 :Sentinel 提供简单易用、完善的

面试官必问面试题汇总

ε祈祈猫儿з 提交于 2020-08-11 14:45:18
面试题一 一、描述下数据库中的事务–ACID各个的特点。 原子性:事务中的操作要么全部成功要么全部失败。 一致性:事务前后数据的完整性必须保持一致。 隔离性:多个并发的事务之间是相互隔离的,互不干扰的。 持久性:事务提交后,数据是永久改变的。 二、什么是springboot?你们公司是用的哪个版本? SpringBoot是Spring推出用于解决传统框架配置文件冗余,装配组件繁杂的基于Maven的解决方案,旨在快速搭建单个微服务。 版本号:2.1.6 三、什么是redis? Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。 四、如何理解springcloud微服务项目中,eureka,provider,consumer它们之间的关系? eureka:提供服务注册于发现 provider:服务提供方法将自身注册到eureka,让消费方找到 consumer:服务消费方从eureka获取注册服务列表,能够消费服务 五、mysql默认的存储引擎是什么? Mysql在V5.1之前默认存储引擎是MyISAM;在此之后默认存储引擎是InnoDB。 MyISAM不支持事务,InnoDB支持事务。 MySIAM不支持外键,InnoDB支持外键, MySIAM支持全文索引,InnoDB不支持全文索引。 六、什么是跨域? 要了解跨域,先要说说同源策略。所谓同源是指

MSCode微服务平台框架基于SpringCloud、SpringBoot、Activiti7工作流和阿里巴巴组件,快速开发办公OA、CRM、ERP、电商、信息管理等业务系统

我怕爱的太早我们不能终老 提交于 2020-08-11 14:43:29
MSCode微服务平台框架 mscodecloud.com 是基于Spring Cloud、Spring Boot、Activiti7工作流和Spring Cloud Alibaba阿里巴巴组件,提供所有源码和详尽文档的企业级快速开发平台。 企业级微服务分布式 : 基于 Spring Cloud Hoxton.SR6 、 Spring Boot 2.3.2 和 Spring Cloud Alibaba阿里巴巴组件 实现企业级微服务架构,支持分布式事务,保障业务高性能、高并发、高可用。 所有源码全部提供 : 提供所有源码,易用稳定可扩展。 二次开发各种企业项目,例如办公(OA)、电商、金融、财务、教育、医疗、信息管理(MIS)、客户关系(CRM)和企业资源计划(ERP)等业务系统。根据业务场景和系统状况,提供定制化的架构设计。 多平台快速开发 : 提供Spring Cloud & Spring Boot 微服务分布式版本 和Spring Boot 单体式版本 ,使用 代码生成器 快速开发。 基于稳定生产的商业项目升级优化而来,更加贴近企业级需求,快速 稳定 高效!!! 1、企业级SpringCloud全套解决方案:采用前沿而又通过生产检验的技术,在享受新技术开发带来便利的同时,又能体验新技术的核心思想与最佳实践。 2、Activiti7工作流协同办公

微信扫码登录是如何实现的?

空扰寡人 提交于 2020-08-11 14:22:17
网页版微信刚推出时,无数人被它的登录方式惊艳了一下,不需要输入用户名密码,打开手机微信扫一扫,便自动登录。从原理上讲,二维码只能是一段文本的编码,如何用它实现快捷登录的呢? 打开网页版微信,可以看到如下的页面: 微信扫码界面 如果你用我查查、支付宝、新浪微博等软件扫码二维码,你会发现此二维码解析出来是如下的网址: https://login.weixin.qq.com/l/obsbQ-Dzag== 接下来详细介绍一下扫码登录具体的每个步骤: 扫码登录完整流程 ①:用户 A 访问微信网页版,微信服务器为这个会话生成一个全局唯一的 ID,上面的 URL 中 obsbQ-Dzag== 就是这个 ID,此时系统并不知道访问者是谁。 ②:用户A打开自己的手机微信并扫描这个二维码,并提示用户是否确认登录。 ③:手机上的微信是登录状态,用户点击确认登录后,手机上的微信客户端将微信账号和这个扫描得到的 ID 一起提交到服务器 ④:服务器将这个 ID 和用户 A 的微信号绑定在一起,并通知网页版微信,这个 ID 对应的微信号为用户 A,网页版微信加载用户 A 的微信信息,至此,扫码登录全部流程完成 扫码登录看起来神奇,主要是因为微信 APP 扫自家的码会做一些普通二维码软件不会做的额外的操作,那就是将当前已登录的微信和扫出来的 ID 提交到微信服务器,类似的应用还有扫码支付、扫码加公众号等功能。