网络空间安全概论 实验3口令认证_第1页
网络空间安全概论 实验3口令认证_第2页
网络空间安全概论 实验3口令认证_第3页
网络空间安全概论 实验3口令认证_第4页
网络空间安全概论 实验3口令认证_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验三实现口令认证实验概述身份认证(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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论