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

下載本文檔

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

文檔簡介

實驗三實現(xiàn)口令認證實驗概述身份認證(EntityAuthentication)也稱為實體鑒別,目的是證實一個實體就是所聲稱的實體。計算機系統(tǒng)中,對各種計算資源(如文件、數(shù)據庫、應用系統(tǒng))機密性和完整性的保護,其本質是防止用戶對系統(tǒng)進行非授權的訪問。在處理授權問題之前,首先需要確認用戶的身份。身份認證通常是系統(tǒng)安全保護的第一道防線,是訪問控制和責任追究的基礎;認證的失敗可能導致整個系統(tǒng)的失敗。這里涉及三個概念:認證、授權及審計。(1)認證:對用戶身份的證實。認證能防止攻擊者假冒合法用戶獲取訪問權限。(2)授權:當用戶身份被證實后,賦予該用戶進行資源訪問的權限。(3)審計:每一個用戶都應該為自己所做的操作負責,所以在每個操作后都要留下記錄,以便事后核查。身份認證分為單向認證和相互認證。如果通信的雙方只需要一方(聲稱方)被另一方(驗證方)鑒別身份,這樣的認證過程是單向認證。在相互認證過程中,通信雙方需要互相認證對方的身份。用戶的身份認證過程通常采用三類憑證驗證實體身份:用戶所知道的信息(如口令、密鑰或記憶的圖形、圖像等),用戶持有的物品(如令牌、智能卡或USBKey等),用戶獨一無二的特征或能力(如指紋、聲音、視網膜血管分布圖或簽字等)。對主機的認證通常可以根據地理位置、IP地址或者硬件地址(MAC地址)、時間、特定場所等作為認證依據。每一種認證方法都存在一些問題,如對口令的認證,敵手可猜測、竊取口令;對用戶持有的令牌的認證,敵手可以盜取令牌,用戶也可能丟失令牌;至于使用生物特征進行認證,也存在誤報和漏報、擾動攻擊、用戶的認可程度、使用成本和易用性等問題。因此,為提高認證系統(tǒng)的強度,可以使用多個因子的認證方式,如口令加智能卡,這種認證方式稱為多因子認證。此次課外實踐將在熟悉認證概念的基礎下,使用高級語言實現(xiàn)基于用戶名口令的登錄程序。實驗內容技術說明此次課外實踐設計的登錄、注冊程序采用B/S架構與SSM框架,具有較高的穩(wěn)定性與可復用性,前端頁面引入LayUI框架簡化開發(fā)。程序代碼注冊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-業(yè)務層

@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-數(shù)據持久層

<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(不包含靜態(tài)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位數(shù)字!';

}

},

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

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

}

},

rePwd:

function

(value,

item)

{

var

pwd

=

$("input[name='password']").val();

if

(pwd

!=

value)

{

return

'密碼與確認密碼不一致!';

}

}

});

//監(jiān)聽提交

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-數(shù)據持久層

<select

id="selectByUsername"

resultType="com.zyl.User">

select

*

from

user

where

username

=

#{username}

</select>前端JS(不包含靜態(tài)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;

//監(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

});

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;

}

}}運行截圖注冊頁登錄頁實驗心得通過此次課外實踐,讓我意識到信息安全的重要性,此次實驗所設計的注冊、登錄程序是基于文本口令實現(xiàn)身份認證的,基于口令的認證方式是較常用的一種技術。在最初階段,用戶首先在系統(tǒng)中注冊自己的用戶名和登錄口令,系統(tǒng)將用戶名和口令存儲在內部數(shù)據庫中,這個口令一般是長期有效的,因此也稱為靜態(tài)口令?;陟o態(tài)口令的身份認證技術因其簡單和低成本而得到了廣泛的使用。但這種方式存在嚴重的安全問題,安全性僅依賴于口令,口令一旦泄露,用戶就可能被假冒。簡單的口令很容易遭受到字典攻擊、窮舉攻擊甚至暴力計算破解。另外,這種不科

溫馨提示

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

評論

0/150

提交評論