版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验三实现口令认证实验概述身份认证(EntityAuthentication)也称为实体鉴别,目的是证实一个实体就是所声称的实体。计算机系统中,对各种计算资源(如文件、数据库、应用系统)机密性和完整性的保护,其本质是防止用户对系统进行非授权的访问。在处理授权问题之前,首先需要确认用户的身份。身份认证通常是系统安全保护的第一道防线,是访问控制和责任追究的基础;认证的失败可能导致整个系统的失败。这里涉及三个概念:认证、授权及审计。(1)认证:对用户身份的证实。认证能防止攻击者假冒合法用户获取访问权限。(2)授权:当用户身份被证实后,赋予该用户进行资源访问的权限。(3)审计:每一个用户都应该为自己所做的操作负责,所以在每个操作后都要留下记录,以便事后核查。身份认证分为单向认证和相互认证。如果通信的双方只需要一方(声称方)被另一方(验证方)鉴别身份,这样的认证过程是单向认证。在相互认证过程中,通信双方需要互相认证对方的身份。用户的身份认证过程通常采用三类凭证验证实体身份:用户所知道的信息(如口令、密钥或记忆的图形、图像等),用户持有的物品(如令牌、智能卡或USBKey等),用户独一无二的特征或能力(如指纹、声音、视网膜血管分布图或签字等)。对主机的认证通常可以根据地理位置、IP地址或者硬件地址(MAC地址)、时间、特定场所等作为认证依据。每一种认证方法都存在一些问题,如对口令的认证,敌手可猜测、窃取口令;对用户持有的令牌的认证,敌手可以盗取令牌,用户也可能丢失令牌;至于使用生物特征进行认证,也存在误报和漏报、扰动攻击、用户的认可程度、使用成本和易用性等问题。因此,为提高认证系统的强度,可以使用多个因子的认证方式,如口令加智能卡,这种认证方式称为多因子认证。此次课外实践将在熟悉认证概念的基础下,使用高级语言实现基于用户名口令的登录程序。实验内容技术说明此次课外实践设计的登录、注册程序采用B/S架构与SSM框架,具有较高的稳定性与可复用性,前端页面引入LayUI框架简化开发。程序代码注册Controller-控制层
@PostMapping("/doRegister")
@ResponseBody
public
ReturnJson
doRegister(@RequestBody
User
user)
{
try
{
if
(userService.isUsernameExsit(user.getUsername()))
{
return
new
ReturnJson(2,
"用户已存在!",
0,
"");
}
if
("男".equals(user.getGender()))
{
user.setAvatar("http://my.image.bed/avatar-boy.png");
}
if
("女".equals(user.getGender()))
{
user.setAvatar("http://my.image.bed/avatar-girl.png");
}
userService.register(user);
return
new
ReturnJson(0,
"注册成功",
0,
"");
}
catch
(Exception
e)
{
return
new
ReturnJson(1,
"注册失败",
0,
"");
}
}Service-业务层
@Override
public
void
register(User
user)
{
user.setPassword(PasswordUtil.bryptPwd(user.getPassword()));
userMapper.insert(user);
}
@Override
public
Boolean
isUsernameExsit(String
username)
{
return
userMapper.selectByUsername(username)
!=
null;
}Mapper-数据持久层
<select
id="selectByUsername"
resultType="com.zyl.User">
select
*
from
user
where
username
=
#{username}
</select>
<insert
id="insert"
useGeneratedKeys="true"
keyProperty="id>
insert
into
user(username,password,gender,avatar)
values
(#{username},#{password},#{gender},#{avatar})
</insert>前端JS(不包含静态Html页面)<script
src="/static/res/layui/layui.js"></script><script>layui.cache.page
=
'user';layui.config({
version:
"3.0.0"
,base:
'/static/res/mods/'}).extend({
fly:
'index'}).use('fly');layui.use(['form',
'jquery'],
function
()
{
var
form
=
layui.form;
var
$
=
layui.jquery;
form.verify({
username:
function
(value,
item)
{
var
Digital
=
/\d/;
var
Letters
=
/[a-zA-Z]/;
if
(!(Digital.test(value)
&&
!Letters.test(value)
&&
value.length
==
11))
{
return
'学号只能为11位数字!';
}
},
nickname:
function
(value)
{
if
(value.length
<
2)
{
return
"昵称至少输入2个字符!";
}
},
pwd:
function
(value,
item)
{
var
Digital
=
/\d/;
var
Letters
=
/[a-zA-Z]/;
if
(!(Digital.test(value)
&&
Letters.test(value)
&&
value.length
>=
0))
{
return
'密码必须含有字母和数字!';
}
},
rePwd:
function
(value,
item)
{
var
pwd
=
$("input[name='password']").val();
if
(pwd
!=
value)
{
return
'密码与确认密码不一致!';
}
}
});
//监听提交
form.on('submit(reg)',
function
(data)
{
$.ajax({
url:
'/doRegister'
,
type:
'post'
,
contentType:
"application/json"
,
data:
JSON.stringify(data.field)
,
success:
function
(result)
{
if
(result.code
==
0)
{
layer.msg('注册成功',
{
time:
2000,
end:
function
()
{
location.href
=
'/login'
}
});
}
else
{
layer.msg(result.msg,
{
time:
1000
});
parent.layer.close();
}
}
});
return
false;
});
$(".oauth
.layui-icon-home").click(function
()
{
window.location.href
=
"/index"
});});</script></body></html>登录Controller-控制层
@PostMapping("/doLogin")
@ResponseBody
public
ReturnJson
doLogin(HttpServletRequest
request,
@RequestBody
User
user)
{
User
newUser
=
userService.loginCheck(user);
if
(newUser
!=
null)
{
request.getSession().setAttribute("user",
newUser);
if
("管理员".equals(newUser.getType()))
{
request.getSession().setAttribute("adminUser",
newUser);
}
request.getSession().setMaxInactiveInterval(1800);
return
new
ReturnJson(0,
"登录成功",
0,
"");
}
else
{
return
new
ReturnJson(1,
"用户名或密码错误",
0,
"");
}
}Service-服务层
@Override
public
User
loginCheck(User
user)
{
User
tmpUser
=
userMapper.selectByUsername(user.getUsername());
boolean
isLogin
=
PasswordUtil.validPwd(user.getPassword(),
tmpUser.getPassword());
if
(isLogin)
{
return
tmpUser;
}
else
{
return
null;
}
}Mapper-数据持久层
<select
id="selectByUsername"
resultType="com.zyl.User">
select
*
from
user
where
username
=
#{username}
</select>前端JS(不包含静态Html页面)<script
src="/static/res/layui/layui.js"></script><script>
layui.config({
version:
"3.0.0"
,
base:
'/static/res/mods/'
}).extend({
fly:
'index'
}).use('fly');
layui.use(['form',
'jquery'],
function
()
{
var
form
=
layui.form;
var
$
=
layui.jquery;
//监听提交
form.on('submit(login)',
function
(data)
{
$.ajax({
url:
'/doLogin'
,
type:
'post'
,
contentType:
"application/json"
,
data:
JSON.stringify(data.field)
,
success:
function
(result)
{
if
(result.msg
==
'登录成功')
{
layer.msg('登录成功',
{
time:
2000,
end:
function
()
{
location.href
=
'/index'
}
});
}
else
{
layer.msg(result.msg,
{
time:
1000
});
var
index
=
parent.layer.getFrameIndex();
parent.layer.close();
}
}
});
return
false;
});
});</script></body></html>密码加密工具类publicclassPasswordUtil{
/**加密密码*/
publicstaticStringbryptPwd(Stringpwd){
returnBCrypt.hashpw(pwd,BCrypt.gensalt());
}
/**校验密码*/
publicstaticbooleanvalidPwd(Stringpwd,Stringhashed){
try{
returnBCrypt.checkpw(pwd,hashed);
}catch(Exceptione){
e.printStackTrace();
returnfalse;
}
}}运行截图注册页登录页实验心得通过此次课外实践,让我意识到信息安全的重要性,此次实验所设计的注册、登录程序是基于文本口令实现身份认证的,基于口令的认证方式是较常用的一种技术。在最初阶段,用户首先在系统中注册自己的用户名和登录口令,系统将用户名和口令存储在内部数据库中,这个口令一般是长期有效的,因此也称为静态口令。基于静态口令的身份认证技术因其简单和低成本而得到了广泛的使用。但这种方式存在严重的安全问题,安全性仅依赖于口令,口令一旦泄露,用户就可能被假冒。简单的口令很容易遭受到字典攻击、穷举攻击甚至暴力计算破解。另外,这种不科
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年校园门卫人员劳动合同编制指南3篇
- 2025年度残疾人劳动合同签订中的残疾人心理关爱与职业适应3篇
- 2024药店负责人任期药店品牌形象塑造聘用合同3篇
- 二零二五年度版权许可合同许可范围和许可费用6篇
- 年度新型铝基轴瓦材料市场分析及竞争策略分析报告
- 年度密封用填料及类似品竞争策略分析报告
- 二零二五年度精装修住宅租赁管理服务合同3篇
- 2024-2025学年高中历史第五单元近现代中国的先进思想第22课孙中山的民主追求课后作业含解析岳麓版必修3
- 2025年度智能交通系统建设合同6篇
- 二零二五年度餐馆员工餐饮服务规范合同3篇
- 100个超高难度绕口令大全
- 《郑伯克段于鄢》-完整版课件
- (日文文书模板范例)请求书-请求书
- 土壤肥料全套课件
- 毕业生延期毕业申请表
- 学校6S管理制度
- 肽的健康作用及应用课件
- T.C--M-ONE效果器使用手册
- 8小时等效A声级计算工具
- 人教版七年级下册数学计算题300道
- 社会实践登记表
评论
0/150
提交评论