版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
實驗三實現(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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 贛南醫(yī)學院《廣告造型基礎》2023-2024學年第一學期期末試卷
- 贛南師范大學科技學院《舞蹈藝術概論》2023-2024學年第一學期期末試卷
- 三年級數(shù)學上冊七年月日一天的時間說課稿北師大版
- 三年級數(shù)學上冊四兩三位數(shù)除以一位數(shù)第3課時除法的驗算教案蘇教版
- 小學生安全備課課件
- 2021中級電氣工程師完整復習試題及答案
- 小學生課堂發(fā)言制度管理
- 三年級健康教學參考計劃范文5篇
- 肝癌微波消融術
- 《愚人節(jié)中英文》課件
- 錨桿錨索鉆機操作規(guī)程
- 《錄音技術與藝術》課程教學大綱
- 部編版七年級語文上下冊教材解讀分析精編ppt
- InternationalSettlementsLecture3InternationalClearingSystems
- (完整版)景觀園林工程施工規(guī)范和技術要求
- (完整版)六年級轉述句練習題
- 蘇武傳作文素材整理-
- 小學一年級班會課教案匯編 全冊
- 公司董事會、總經理辦公會議事清單.docx
- 煤礦礦井供電設計(DOC26頁)
- 中國鶴翔莊氣功之五站樁功
評論
0/150
提交評論