安全
文章平均质量分 94
flydean程序那些事
懂程序更懂你!微信公众号:程序那些事 个人主页:www.flydean.com 最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧,尽在程序那些事!
展开
-
keycloak集群化的思考
单体服务如果想要突破到高并发服务就需要升级为集群服务。同时集群化也为高可用打下了坚实的基础。纵观现在比较流行的服务或者中间件,不管是RabbitMQ还是redis都提供了集群的功能。作为硬核工业代表的wildfly也不例外,最近研究了一下keycloak的集群,发现它的底层服务器用的也是wildfly,本文将会和大家探讨一下keycloak的集群的架构思路。原创 2021-01-13 17:02:51 · 8626 阅读 · 1 评论 -
在onelogin中使用OpenId Connect Implicit Flow
onelogin支持多种OpenId Connect的连接模式,上一篇文章我们讲到了使用openId的Authentication Flow,今天我们将会讲解一下如何使用Implicit Flow。原创 2021-01-07 21:43:30 · 9478 阅读 · 5 评论 -
在onelogin中使用OpenId Connect Authentication Flow
onelogin是一个优秀的SSO(Single Sign-On)服务提供商,我们可以借助onelogin的服务,轻松构建SSO程序。之前我们也讲过了,构建SSO的通用协议一般有两种,OpenID connect和SAML。今天我们将会通过一个具体的例子来讲解一下怎么在onelogin中使用OpenID connect中的Authentication Flow来进行SSO认证。原创 2021-01-05 20:21:56 · 10091 阅读 · 1 评论 -
SAML和OAuth2这两种SSO协议的区别
SSO是单点登录的简称,常用的SSO的协议有两种,分别是SAML和OAuth2。本文将会介绍两种协议的不同之处,从而让读者对这两种协议有更加深入的理解。原创 2021-01-02 21:58:48 · 15502 阅读 · 1 评论 -
权限系统的基本概念和架构
权限系统是我们在系统设计和应用中一种非常常见的系统。一般来说权限系统的功能分为认证和授权两种。认证就非常简单的,验证完用户名密码就算认证成功,而授权里面的套路就很多了,本文将会详细讲解权限系统中的一些基本概念和设计上面要注意的问题,希望大家能够喜欢。原创 2020-12-21 19:33:06 · 16147 阅读 · 12 评论 -
在wildfly中使用SAML协议连接keycloak
我们知道SSO的两个常用的协议分别是SAML和OpenID Connect,我们在前一篇文章已经讲过了怎么在wildfly中使用OpenID Connect连接keycloak,今天我们会继续讲解怎么使用SAML协议连接keycloak。原创 2020-12-19 19:06:52 · 13379 阅读 · 4 评论 -
SSO的通用标准OpenID Connect
OpenID Connect简称为OIDC,已成为Internet上单点登录和身份管理的通用标准。 它在OAuth2上构建了一个身份层,是一个基于OAuth2协议的身份认证标准协议。OAuth2实际上只做了授权,而OpenID Connect在授权的基础上又加上了认证。OIDC的优点是:简单的基于JSON的身份令牌(JWT),并且完全兼容OAuth2协议。今天我们将会介绍一下OIDC的具体原理。原创 2020-12-15 21:20:15 · 14481 阅读 · 4 评论 -
安全声明标记语言SAML2.0初探
SAML的全称是Security Assertion Markup Language, 是由OASIS制定的一套基于XML格式的开放标准,用在身份提供者(IdP)和服务提供者 (SP)之间交换身份验证和授权数据。SAML的一个非常重要的应用就是基于Web的单点登录(SSO)。接下来我们一起来看看SAML是怎么工作的。原创 2020-12-13 19:31:25 · 14732 阅读 · 5 评论 -
开源认证和访问控制的利器keycloak使用简介
keycloak是一个开源的进行身份认证和访问控制的软件。是由Red Hat基金会开发的,我们可以使用keycloak方便的向应用程序和安全服务添加身份认证,非常的方便。keycloak还支持一些高级的特性,比如身份代理,社交登录等等。本文将会带领大家进入keycloak的神秘世界。原创 2020-11-26 09:35:11 · 17835 阅读 · 6 评论 -
OAuth 2.0授权框架详解
在现代的网站中,我们经常会遇到使用OAuth授权的情况,比如有一个比较小众的网站,需要用户登录,但是直接让用户注册就显得非常麻烦,用户可能因为这个原因而流失,那么该网站可以使用OAuth授权,借助于github或者其他的第三方网站的认证授权,来获取相关的用户信息,从而避免了用户注册的步骤。当然,很可能在第三方网站上授权获得用户信息之后,还需要在本网站填写一些必要的信息进行绑定,比如手机号,用户名等等。但是这比单纯的注册要方便太多了,也容易让用户接受。今天,我们将要讲解一下OAuth 2.0授权框原创 2020-11-24 09:59:27 · 18503 阅读 · 15 评论 -
java安全编码指南之:文件和共享目录的安全性
java程序是跨平台的,可以运行在windows也可以运行在linux。但是平台不同,平台中的文件权限也是不同的。windows大家经常使用,并且是可视化的权限管理,这里就不多讲了。本文主要讲讲linux下面的文件的权限和安全性问题,并且探讨一下如何在java程序中考虑文件的安全性。原创 2020-11-03 09:14:31 · 18051 阅读 · 3 评论 -
java安全编码指南之:序列化Serialization
序列化是java中一个非常常用又会被人忽视的功能,我们将对象写入文件需要序列化,同时,对象如果想要在网络上传输也需要进行序列化。序列化的目的就是保证对象可以正确的传输,那么我们在序列化的过程中需要注意些什么问题呢?原创 2020-11-01 10:27:26 · 19398 阅读 · 28 评论 -
java安全编码指南之:文件IO操作
对于文件的IO操作应该是我们经常会使用到的,因为文件的复杂性,我们在使用File操作的时候也有很多需要注意的地方,下面我一起来看看吧。原创 2020-10-27 10:47:35 · 18995 阅读 · 5 评论 -
java安全编码指南之:线程安全规则
如果我们在多线程中引入了共享变量,那么我们就需要考虑一下多线程下线程安全的问题了。那么我们在编写代码的过程中,需要注意哪些线程安全的问题呢?原创 2020-10-23 09:26:22 · 19929 阅读 · 15 评论 -
java安全编码指南之:ThreadPool的使用
在java中,除了单个使用Thread之外,我们还会使用到ThreadPool来构建线程池,那么在使用线程池的过程中需要注意哪些事情呢?一起来看看吧。原创 2020-10-20 09:41:22 · 18298 阅读 · 6 评论 -
java安全编码指南之:Thread API调用规则
java中多线程的开发中少不了使用Thread,我们在使用Thread中提供的API过程中,应该注意些什么规则呢?一起来看一看吧。原创 2020-10-19 09:15:03 · 19667 阅读 · 15 评论 -
java安全编码指南之:锁的双重检测
双重检测锁定模式是一种设计模式,我们通过首次检测锁定条件而不是实际获得锁从而减少获取锁的开销。双重检查锁定模式用法通常用于实现执行延迟初始化的单例工厂模式。延迟初始化推迟了成员字段或成员字段引用的对象的构造,直到实际需要才真正的创建。但是我们需要非常小心的使用双重检测模式,以避免发送错误。原创 2020-10-14 08:56:24 · 19964 阅读 · 15 评论 -
java安全编码指南之:输入注入injection
注入问题是安全中一个非常常见的问题,今天我们来探讨一下java中的SQL注入和XML注入的防范。原创 2020-10-12 09:03:44 · 20500 阅读 · 19 评论 -
java安全编码指南之:lock和同步的正确使用
在java多线程环境中,lock和同步是我们一定会使用到的功能。那么在java中编写lock和同步相关的代码之后,需要注意哪些问题呢?一起来看看吧。原创 2020-10-10 08:57:22 · 19093 阅读 · 12 评论 -
java安全编码指南之:方法编写指南
java程序的逻辑是由一个个的方法组成的,而在编写方法的过程中,我们也需要遵守一定的安全规则,比如方法的参数进行校验,不要在assert中添加业务逻辑,不要使用废弃或者过期的方法,做安全检查的方法一定要设置为private等。今天我们再来深入的探讨一下,java方法的编写过程中还有哪些要注意的地方。原创 2020-10-08 09:05:50 · 18428 阅读 · 8 评论 -
java安全编码指南之:死锁dead lock
java中为了保证共享数据的安全性,我们引入了锁的机制。有了锁就有可能产生死锁。死锁的原因就是多个线程锁住了对方所需要的资源,然后现有的资源又没有释放,从而导致循环等待的情况。通常来说如果不同的线程对加锁和释放锁的顺序不一致的话,就很有可能产生死锁。原创 2020-10-01 08:44:36 · 20110 阅读 · 8 评论 -
java安全编码指南之:异常处理
异常是java程序员无法避免的一个话题,我们会有JVM自己的异常也有应用程序的异常,对于不同的异常,我们的处理原则是不是一样的呢?一起来看看吧。原创 2020-09-29 09:16:16 · 21187 阅读 · 16 评论 -
java安全编码指南之:敏感类的拷贝
一般来说class中如果包含了私有的或者敏感的数据的时候是不允许被拷贝的。如果一个class不想被拷贝,我们是不是不提供拷贝的方法就能保证class的安全了呢?一起来看看吧。原创 2020-09-27 09:46:37 · 18459 阅读 · 5 评论 -
java安全编码指南之:Number操作
文章目录简介Number的范围区分位运算和算数运算注意不要使用0作为除数兼容C++的无符号整数类型NAN和INFINITY不要使用float或者double作为循环的计数器BigDecimal的构建类型转换问题简介java中可以被称为Number的有byte,short,int,long,float,double和char,我们在使用这些Nubmer的过程中,需要注意些什么内容呢?一起来看看吧。Number的范围每种Number类型都有它的范围,我们看下java中Number类型的范围:考虑到我原创 2020-09-10 09:55:41 · 20749 阅读 · 6 评论 -
java安全编码指南之:表达式规则
文章目录简介注意表达式的返回值注意避免NullPointerException数组相等的判断基础类型的封装类间的比较集合中类型不匹配Asset的副作用简介在java编写过程中,我们会使用到各种各样的表达式,在使用表达式的过程中,有哪些安全问题需要我们注意的呢?一起来看看吧。注意表达式的返回值我们在使用JDK库的时候,一定要注意认真的读一下JDK中方法的含义和它的返回值。有些返回值可能表示这个操作是否成功,有的返回值可能是方法操作的结果。我们看两个常见的例子: public void del原创 2020-09-08 09:22:32 · 19342 阅读 · 4 评论 -
java安全编码指南之:声明和初始化
文章目录简介初始化顺序循环初始化不要使用java标准库中的类名作为自己的类名不要在增强的for语句中修改变量值简介在java对象和字段的初始化过程中会遇到哪些安全性问题呢?一起来看看吧。初始化顺序根据JLS(Java Language Specification)中的定义,class在初始化过程中,需要同时初始化class中定义的静态初始化程序和在该类中声明的静态字段(类变量)的初始化程序。而对于static变量来说,如果static变量被定义为final并且它值是编译时常量值,那么该static原创 2020-09-06 08:56:11 · 19887 阅读 · 4 评论 -
java安全编码指南之:Mutability可变性
文章目录简介可变对象和不可变对象创建mutable对象的拷贝为mutable类创建copy方法不要相信equals不要直接暴露可修改的属性public static fields应该被置位finalpublic static final field 应该是不可变的简介mutable(可变)和immutable(不可变)对象是我们在java程序编写的过程中经常会使用到的。可变类型对象就是说,对象在创建之后,其内部的数据可能会被修改。所以它的安全性没有保证。而不可变类型对象就是说,对象一旦创建之后,其内原创 2020-09-03 09:20:15 · 20030 阅读 · 5 评论 -
java安全编码指南之:对象构建
Finalizer Attack是什么?它和对象创建有什么关系?一起来看看吧。原创 2020-09-01 09:29:59 · 19698 阅读 · 6 评论 -
java安全编码指南之:拒绝Denial of Service
DOS不是那个windows的前身,而是Denial of Service,有做过系统安全方面的小伙伴可能对这个再熟悉不过了,简单点讲,DOS就是服务型响应不过来,从而拒绝了正常的服务请求。今天本文不是要讲怎么发起一个DOS攻击,而是讲一下怎么在java的代码层面尽量减少DOS的可能性。原创 2020-08-27 09:58:43 · 20233 阅读 · 4 评论 -
java安全编码指南之:基础篇
作为一个程序员,只是写出好用的代码是不够的,我们还需要考虑到程序的安全性。在这个不能跟陌生人说话世界,扶老奶奶过马路都是一件很困难的事情。那么对于程序员来说,尤其是对于开发那种对外可以公开访问的网站的程序员,要承受的压力会大很多。任何人都可以访问我们的系统,也就意味着如果我们的系统不够健壮,或者有些漏洞,恶意攻击者就会破门而入,将我们辛辛苦苦写的程序蹂躏的体无完肤。所以,安全很重要,今天本文将会探讨一下java中的安全编码指南。原创 2020-08-25 09:54:28 · 21180 阅读 · 5 评论 -
java安全编码指南之:可见性和原子性
java类中会定义很多变量,有类变量也有实例变量,这些变量在访问的过程中,会遇到一些可见性和原子性的问题。这里我们来详细了解一下怎么避免这些问题。原创 2020-09-25 10:57:36 · 21556 阅读 · 17 评论 -
java安全编码指南之:输入校验
为了保证java程序的安全,任何外部用户的输入我们都认为是可能有恶意攻击意图,我们需要对所有的用户输入都进行一定程度的校验。本文将带领大家探讨一下用户输入校验的一些场景。一起来看看吧。原创 2020-09-21 10:27:04 · 20872 阅读 · 10 评论 -
java安全编码指南之:堆污染Heap pollution
什么是堆污染呢?堆污染是指当参数化类型变量引用的对象不是该参数化类型的对象时而发生的。我们知道在JDK5中,引入了泛型的概念,我们可以在创建集合类的时候,指定该集合类中应该存储的对象类型。如果在指定类型的集合中,引用了不同的类型,那么这种情况就叫做堆污染。原创 2020-09-18 10:08:20 · 19158 阅读 · 5 评论