java面试亮点技术

RSA非对称密码算法

RSA算法是一种非对称密码算法,前台需要一个公钥加密,后台需要私钥解密(所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密)。

我们做的这个平台属于互联网平台,面向的是互联网,所有也会导致一些安全的问题,我们在请求上一般来说只要是带参数的请求就要为post方式,这样不明文传输,但稍微懂一点技术的f12看一下post请求中携带的参数或者通过爬虫就可以看到,这时就会出现安全的一些问题,比如用户登录和一些关于重要信息操作的请求连接中的参数就会明文显示了,这时我们采用RSA公钥+私钥的非对称加密进行操作,前台参数在传递时通过js进行公钥加密传递,后台接受到参数后通过私钥解密,这时问题是解决了,但出现了一个问题,只要有请求加密了参数那处理该请求的方法中就要有解密的方法,这时业务逻辑和非业务逻辑的东西都混在了一起,非常不好,这时候我配置了一个过滤器Filter,将需要加密的请求全部过滤,用户发送请求只要是加密的就会被过滤器所过滤进行解密,解密完后将参数在通过Java反射机制动态赋值给springmvc处理器中的方法形参,从而做到后台解密与业务逻辑分开,这就是我们采用的rsa的加密方式

权限描述(RBAC+Shiro)

在数据库方面我们采用了RBAC(基于角色的访问控制)的设计,核心涉及到5张表。三张主表:用户、角色、资源,两张关系表:用户角色关系表、角色资源关系表。我们还使用了Apache的Shiro来做为安全框架,完成对权限的管理和控制。Shiro的核心就是Subject->SecurityManager->Realm,Subject是Shiro的对外(代码)核心API,Subject的所有交互都交由Security Manager(Security Manager才是实际的执行者)。Security Ma

你可能感兴趣的:(java面试,java,面试,开发语言)