pms项目系统安全性设计

  由于系统与外部系统存在接口,且为了防止恶意注入、盗取信息等行为的发生,采取了一系列的措施用于系统安全性的保证。

  系统安全设计包括用户在线时长判断,身份和权限验证,动作拦截,单点登录,重要信息修改验证,超级管理员登录验证几个部分。现说明如下:

 1.1 在线时长判断

用户登录之后,如果超过一段时间无任何操作,则再进行操作时会跳转到登录页面,需要进行重新登录。该设计通过拦截器SessionInteceptor以及在web.xml文件中进行session-config配置实现。在web.xml中,配置session-config,设置session-timeout为session的失效时间,当这个时间段内用户没有操作,该用户信息session失效,再执行其他动作时,拦截器中对此动作进行拦截,判断session是否已经失效,如是则跳转回登录页。

1.2 身份和权限验证

本系统对用户登录的身份进行极其严格的验证。实现如下:

在登录程序loginAction.java中,首先判断输入的用户名和密码是否正确,其次判断用户角色是否为启用状态,如果所有用户角色均非启用则没有权限进入系统,而进入系统的用户所有的权限只有其所有用的启用状态角色的权限,并需要进行申请或验证,由管理员审核拖过或验证信息通过后才可获得相应的权限。

1.3 用户动作拦截

为了防止非法注入等操作,本系统对登录用户的所有操作都实施拦截并验证。实现如下:

对于所有的action,均将用户逻辑编号userlogicId作为参数传递,拦截器SessionInterceptor拦截action获取userlogicId参数,将其与登录用户存放于Session中的userlogicId进行比对,如果二者不同,则认定为非法注入,跳回登录页面,否则则认定为正常操作。

1.4 单点登录

本系统要求同一账号同时只能在一地在线,即防止重复登录。设计实现如下:

设计一个application的map:userloginMap用户存放已登录用户的信息,其结构为<用户逻辑Id,SessionId>的键值对。当用户执行登录操作时,遍历userloginmap,如果其中有userlogicId与登录用户的userlogicId相等,则判定该用户已经登录,提示不可重复登录,如果其中的sessionId与登录用户的sessionId相等,则判定在本地同一浏览器已有用户登录,不可重复登录。当用户执行登出操作后,删除userloginMap中对应的<userlogicId,sessionId>,则该userlogicId对应的用户可重新登录系统。

1.5 重要信息修改验证

本系统中,当用户修改个人的联系方式,超级管理员修改用户名时,需要发送验证码到用户的手机中,输入接收到的验证码之后才能完成信息的修改。

1.6 超级管理员登录验证

由于超级管理员是本系统中最为重要的一个角色,也只有一个用户拥有该角色,其账号的安全也关系到整个系统的安全性。为了避免超级管理员的密码丢失或被窃取,设计超级管理员每次登录系统需要发送随机密码到超级管理员用户的手机,根据随机密码登录系统,实现如下:

当用户在登录页面输入用户名时,系统通过前端页面发送ajax异步请求到后台action进行判断,如果该用户名是超级管理员用户的,则后台生成随机密码并发送到超级管理员用户的手机,随机密码由八位随机数字和字母组成,超级管理员用户根据收到的随机密码登录系统。为了防止非其他用户利用此功能发送短信到超级管理员用户,超级管理员可登入系统修改用户名,保证用户名的动态性,避免恶意骚扰。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值