基于JSP的教师工资管理系统的安全机制设计Word文档格式.docx

上传人:b****1 文档编号:13311275 上传时间:2022-10-09 格式:DOCX 页数:6 大小:19.34KB
下载 相关 举报
基于JSP的教师工资管理系统的安全机制设计Word文档格式.docx_第1页
第1页 / 共6页
基于JSP的教师工资管理系统的安全机制设计Word文档格式.docx_第2页
第2页 / 共6页
基于JSP的教师工资管理系统的安全机制设计Word文档格式.docx_第3页
第3页 / 共6页
基于JSP的教师工资管理系统的安全机制设计Word文档格式.docx_第4页
第4页 / 共6页
基于JSP的教师工资管理系统的安全机制设计Word文档格式.docx_第5页
第5页 / 共6页
点击查看更多>>
下载资源
资源描述

基于JSP的教师工资管理系统的安全机制设计Word文档格式.docx

《基于JSP的教师工资管理系统的安全机制设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于JSP的教师工资管理系统的安全机制设计Word文档格式.docx(6页珍藏版)》请在冰豆网上搜索。

基于JSP的教师工资管理系统的安全机制设计Word文档格式.docx

  教师工资管理系统是学校内不可缺少的应用系统,它的应用减轻了财务管理人员对工资数据的统计工作,使学校中与财务部门相联系的各部门工作得到简化,这些部门可以方便、快捷、及时地统计数据并将数据传递给财务部门,同时教师员工也可以及时查询每个月工资的详细信息。

本系统主要是结合以上三方面的需求而设计的,系统主要涉及三个部门,财务处(核算工资)、教务处(核算课时津贴)以及办公室(核算考勤数据),教务处与办公室分别将每月核算后的数据保存在数据库中,财务处通过调用得到教务处与办公室的数据,从而核算每位教师员工的工资数据,普通教师可以登录教师工资查询系统查询每个月工资的详细信息,系统功能图如图1所示:

  

  图1

  教师工资管理系统主要是管理工资数据,通常工资数据是不允许泄漏的,不排除系统会受到非法入侵,例如:

SQL注入、用户密码被猜解、非置信用户的入侵等等,同时合法用户的无意识非法操作也会给系统的安全造成威胁,如果不应用相应的安全防范机制,必定会受到严重的损失。

因此教师工资查询系统的安全性必须得到保证。

  安全的系统首先应构建于安全的平台之上,现在比较流行的开发平台有.Net和JSP等,但利用.Net平台开发出来的系统运行速度相对较慢,重要的是安全性比JSP要弱一些,因此本系统选择了JSP作为开发平台。

JSP技术可以生成页面上的动态内容,用HTML或者XML标识来设计和格式化最终页面。

生成内容的逻辑被封装在标识和JavaBeans组件中,JavaBean可以将功能、处理、值、数据库访问和其他任何可以用java代码创造的对象进行打包,通过内部的JSP页面、Servlet、其他JavaBean、applet程序或者应用来使用这些对象,所有的脚本在服务器端运行。

在服务器端,JSP引擎解释JSP标识和小脚本,生成所请求的内容,并且将结果以HTML(或者XML)页面的形式发送回浏览器。

这样做一方面增加了代码的可重用性,另一方面有助于保护代码不被泄漏。

  1教师工资管理系统安全机制设计

  1.1数据库的安全机制

  通常在设计系统时,只为登录前台系统的用户设置不用的权限,而忽略了访问数据库用户的权限设置。

本系统选择SQLSever作为数据库平台,在数据库中建立三个用户组分别为:

SysAdmin(系统管理员组)、SalAdmin(工资管理员组)、ComUser(普通用户组)并赋于不同的权限,设置权限的SQL语句如下:

  SysAdmin组:

grantallonbulletin,userstogroupSysAadminwithgrantoption

  //系统管理员对公告表和用户表具有所有操作权限

  SalAdmin组:

grantallonsalary,subsidy,timetable,bulletintogroupSalAadminwithgrantoption

  //工资管理员对工资表、课贴表、考勤表、公告表具有所有操作权限

  ComUser组:

grantselectonsalary,subsidy,timetable,bulletintogroupComUserwithgrantoption

  //普通用户对工资表、课贴表、考勤表、公告表只有选择的权限

  然后建立三个用户分别为sysclient、salclient、comclient,将这三个用户分别加入到相应的用户组中,从而实现在访问数据库时保证其安全。

用户对数据库的的访问过程如下图:

  1.2用户三次登录失败后的处理

  为了避免利用枚举法猜解用户的密码,在本系统中定义了相应的处理规则,即如果某用户连续三次登录失败时,应及时封住此用户名,在于管理员联系核实后方可正常登录工资管理系统。

  interrnum=CheckUser.loginErrNum();

  if(errnum<

3){

  Stringmesg=“登录失败,您还有”+(3-errnum)+”次登录机会!

”;

  }else{

  Stringmesg=“连续三次登录失败,帐号已被封冻,请及时与管理员联系!

  }

  returnmesg;

  1.3对用户输入数据的有效性进行验证

  在系统中有一些需要用户输入的数据,例如管理员会查询教师姓名为“陶乐”的用户信息时,系统所产生的SQL语句为:

select*fromuserswhereuname='

陶乐'

,但也可以输入:

or'

1'

='

1,此时系统所产生的SQL语句为:

Rong'

,由于条件式为真,这样就可以把所有用户的信息都输出出来,这是不允许的。

因此当用户输入数据并提交时,必须对用户输入的数据进行验证,方法是列举出所有非法字符,只要用户输入的数据在非法字符范围内则提交失败,代码如下:

  Stringinj_str="

'

|?

|and|exec|insert|select|delete|update|c

  Ount|*|%|chr|mid|master|truncate|char|declare|;

|or|-|+|,"

;

  Stringfilter_stra[]=inj_filter.split("

[|]"

);

  for(inti=0;

i=0){returntrue;

}

  returnfalse;

  1.4对用户名和密码进行加密

  考虑到登录系统的用户名和密码的安全性,用于登录教师工资管理系统的所有用户名和密码都需要进行加密。

现存的大多数系统是利用MD5的加密解密算法,由于经过MD5加密后的数据很容易被破解,所以在这里使用的是DES对称加密算法,DES算法具有极高安全性,到目前为止,除了用穷举搜索法对DES算法进行攻击外,还没有发现更有效的办法,因此选择此算法。

  DES算法需要三个参数:

工作密钥、原始数据、工作模式。

  当工作模式为加密时,用工作密钥对原始数据进行加密,生成64位的密码形式;

  加密原代码如下:

  Security.addProvider(newcom.sun.crypto.provider.SunJCE());

  StringAlgorithm="

DES"

  KeyGeneratorkg=KeyGenerator.getInstance(Algorithm);

  SecretKeydeskg=kg.generateKey();

//生成密钥

  Cipherc1=Cipher.getInstance(Algorithm);

  c1.init(Cipher.ENCRYPT_MODE,deskg);

  //将加密后的用户名和密码转换为字符串,方便保存

  StringcryptName=newString(c1.doFinal(name.getBytes()));

  StringcryptPasd=newString(c1.doFinal(password.getBytes()));

  //分别将用户名密文、密码密文和工作密钥存入数据库

  当工作模式为解密时,则用工作密钥将加密后的数据进行解密,生成原始数据。

  解密原代码如下:

  //从数据库读入用户名密文cryptName、密码密文cryptPasd和工作密钥deskg

  nameByte=cryptName.getBytes();

  pasdByte=cryptPasd.getBytes();

  c1=Cipher.getInstance(Algorithm);

  c1.init(Cipher.DECRYPT_MODE,deskg);

  byte[]decryptName=c1.doFinal(nameByte);

  StringoriginName=newString(decryptName);

//原始用户名

  byte[]decryptPasd=c1.doFinal(pasdByte);

  StringoriginPasd=newString(decryptPasd);

//原始密码

  String[]box={originName,originPasd};

  returnbox;

  1.5必不可少的身份验证

  HTTP是一个不记录状态的协议,当用户利用合法的用户名和密码登录系统后,再进入到其它页面,如果这些页面没有身份验证,那么非法用户也可以利用URL地址直接打开页面查看数据。

因此,在打开每一个页面时首先要对用户的合法性进行验证,不合法用户则转移到error.html页面。

session机制则是一种在客户端与服务器之间保持状态的解决方案,而且session机制相对较安全。

在用户进入系统后用session变量记录用户名和权限。

代码如下:

  session.setAttribute("

usr"

"

普通用户"

autho"

管理员"

  当用户进入每一个页面时,把这些值取回来,从而判断用户是否合法,代码如下:

  name=session.getAttribute("

  authority=session.getAttribute("

  if(name.equals(null)||!

authority.equals("

)){

  response.sendRedirect("

error.htm"

  }

  1.6防止用户提交数据后刷新页面

  在工资管理系统中,输入课贴数据、考勤数据等操作须在一次操作过程中完成,防止用户刷新页面使得数据再次被提交。

防止刷新的基本思路是在网页中设置一个Hidden表单域,其值是在服务器端随机生成一个session值,Hidden域值和session值在用户做提交动作时是同步修改的,但如果用户刷新页面,那么session值和Hidden值就不相等,则直接给出错误提示。

  java.lang.StringhiddenKey="

hiddenKey"

//hidden表单域key值

  java.lang.StringhiddenValue=java.lang.String.valueOf(System.

  currentTimeMillis());

//hidden表单域v

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 哲学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1