網(wǎng)絡空間安全概論 實驗3口令認證_第1頁
網(wǎng)絡空間安全概論 實驗3口令認證_第2頁
網(wǎng)絡空間安全概論 實驗3口令認證_第3頁
網(wǎng)絡空間安全概論 實驗3口令認證_第4頁
網(wǎng)絡空間安全概論 實驗3口令認證_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

實驗三實現(xiàn)口令認證

1.實驗概述

身份認證(EntityAuthentication)也稱為實體鑒別,目的是證實一個實體就是所

聲稱的實體。計算機系統(tǒng)中,對各種計算資源(如文件、數(shù)據(jù)庫、應用系統(tǒng))機密性和

完整性的保護,其本質(zhì)是防il.用戶對系統(tǒng)進行非授權的訪問。在處理授權問題之前,

首先需要確認用戶的身份。身份認證通常是系統(tǒng)安全保護的第一道防線,是訪問控制

和責任追究的基礎;認證的失敗可能導致整個系統(tǒng)的失敗。

這里涉及三個概念:認證、授權及審計。

(1)認證:對用戶身份的證實。認證能防止攻擊者假冒合法用戶獲取訪問權限。

(2)授權:當用戶身份被證實后,賦予該用戶進行資源訪問的權限。

(3)審計:每一個用戶都應該為自己所做的操作負貢,所以在每個操作后都要竽卜

記錄,以便事后核查。

身份認證分為單向認證和相互認證。如果通信的雙方只需要一方(聲稱方)被另一

方(驗證方)鑒別身份,這樣的認證過程是單向認證。在相互認證過程中,通信雙方需

要互相認證對方的身份。

用戶的身份認證過程通常采用三類憑證驗證實體身份:用戶所知道的信息(如=1

令、密鑰或記憶的圖形、圖像等),用戶持有的物品(如令牌、智能卡或USBKey等),

用戶獨一無二的特征或能力(如指紋、聲音、視網(wǎng)膜血管分布圖或簽字等)。對主機的

認證通常可以根據(jù)地理位置、IP地址或者硬件地址(MAC地址)、時間、特定場所等作

為認證依據(jù)。每一種認證方法都存在一些問題,如對口令的認證,敵手可猜測、竊取

口令;對用戶持有的令牌的認證,敵手可以盜取令牌,用戶也可能丟失令牌;至于使

用生物特征進行認證,也存在誤報和漏報、擾動攻擊、用戶的認可程度、使用成本和

易用性等問題。因此,為提高認證系統(tǒng)的強度,可以使用多個因子的認證方式,如口

令加智能卡,這種認證方式稱為多因子認證。

此次課外實踐將在熟悉認證概念的基礎下,使用高級語言實現(xiàn)基于用戶名口令的

登錄程序。

2.實驗內(nèi)容

2.1技術說明

此次課外實踐設計的登錄、注冊程序采用B/S架構與SSM框架,具有較高的穩(wěn)定

性與可復用性,前端頁面引入LayUI框架簡化開發(fā)。

2.2程序代碼

(1)注冊

Controller-控制層

@PostMapping("/doRegister")

@ResponseBody

publicReturnDsondoRegister(@RequestBodyUseruser){

try{

if(userService.isUsernameExsit(user.getllsername())){

returnnewReturnJson(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);

returnnewReturnJson(0,"注冊成功",0,M");

}catch(Exceptione){

returnnewReturnJson(l,"注冊失敗",。,""

)

)

Service-業(yè)務層

0Override

publicvoidregister(Useruser){

user.setPassword(PasswordUtil.bryptPwd(user.getPassword())

);

userMapper.insert(user);

)

0Override

publicBooleanisllsernameExsit(Stringusername){

returnuserMapper.selectByUsername(username)!=null;

)

Mapper-數(shù)據(jù)持久層

<selectid="selectByUsername"resultType="com.zyl.User">

select*fromuserwhereusername=#{username}

</select>

<insertid="insert"useGeneratedKeys="true"keyProperty="id>

insertintouserCusernamejpassword,gender,avatar)

values(#{username},#{password}J#{gender},#{avatar})

</insert>

前端JS(不包含靜態(tài)Html頁面)

〈scriptsrc="/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(){

varform=layui.form;

var$=layui.jquery;

form.verify((

username:function(value,item){

varDigital=/\d/;

varLetters=/[a-zA-Z]/;

if(!(Digital.test(value)&&!Letters.test(value)&&val

ue.length==11)){

return'學號只能為1:1■位數(shù)字!’;

)

nickname:function(value){

if(value.length<2){

return”昵稱至少輸入2個字符!

}

},

pwd:function(value,item){

varDigital=/\d/;

varLetters=/[a-zA-Z]/;

if(1(Digital.test(value)&&Letters.test(value)&&valu

e.length>=0)){

return'密碼必須含有字母和數(shù)子!’;

)

rePwd:function(value,item){

@PostMapping("/doLogin")

@ResponseBody

publicReturnJsondoLogin(HttpServletRequestrequest,@Reque

stBodyUseruser){

UsernewUser=userService.loginCheck(user);

if(newJser!=null){

request.getSession().setAttribute("user",newUser);

if.equals(newUser.getType())){

request.getSession().setAttribute("adminUser"newUser

);

}

request.getSession().setMaxInactiveInterval(1800);

returnnewReturnJson(0,"登錄成功",0,

}else{

returnnewReturnJson(1,”用戶名或密碼錯誤","”為

)

}

Service-月艮務層

gOverride

publicUserloginCheck(Useruser){

UsertmpUser=userMapper.selectByllsername(user.getUsernam

eO);

booleanisLogin=PasswordUtil.validPwd(user.getPassword()

,tmpUser.getPassword());

if(isLogin){

returntmpUser;

}else{

returnnull;

)

}

Mapper-數(shù)據(jù)持久層

<selectid="selectByUsername"resultType="com.zyl.User">

select*fromuserwhereusername=#{username}

</select>

前端JS(不包含靜態(tài)Html頁面)

<scriptsrc="/static/res/layui/layui.js"x/script>

<script>

layui.config({

version:"3.0.0"

,base:'/static/res/mods/'

}).extend({

fly:'index'

}).叱(');

layui.use(['form','jquery*],function(){

vanform=layui.form;

van$=layui.jquery;

〃監(jiān)聽提交

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

});

vanindex=parent.layer.getFrameindex(

);

parent.layer.close();

)

}

});

returnfalse;

});

});

</script>

</body>

</html>

(3)密碼加密工具類

publicclassPasswordutil

/**加密密碼*/

publicstaticStringbryptPwd(Stringpwd){

returnBCrypt.hashpwCpwd^BCrypt.gensalt());

}

/**校驗密碼*/

publicstaticbooleanvalidPwd(Stringpwd,Stringhashed){

try(

returnBCrypt.checkpw(pwd,hashed);

}catch(Exceptione){

e.printStackTraceO;

returnfalse;

)

}

)

2.3運行截圖

(1)注冊頁

(J)ft*IUH

登蜃心

用Q名g人用戶名

"at-?sO女

密碼**人士碼-1&1中布

WU.2QUI?認2的

(2)登錄頁

STam

用戶名■懦入亭號

3.實驗心得

通過此次課外實踐,讓我意識到信息安全的重要性,此次實驗所設計的注冊、登

錄程序是基于文本口令實現(xiàn)身份認證的,基于口令的認證方式是較常用的一種技術。

在最初階段,用戶首先在系統(tǒng)中注冊自己的用戶名和登錄口令,系統(tǒng)將用戶名和口令

存儲在內(nèi)部數(shù)據(jù)庫中,這個口令?般是長期有效的,因此也稱為靜態(tài)口令。

基于靜態(tài)11令的身份認證技術因其簡單和低成本而得到了廣泛的使用。但這種方

式存在嚴重的安全問題,安全性僅依賴于口令,口令一旦泄露,用戶就可能被假冒。

簡單

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論