国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

網(wǎng)站流行技術(shù)-認(rèn)證碼技術(shù)初探

2019-11-18 13:23:45
字體:
供稿:網(wǎng)友

  一、認(rèn)證碼的含義
  
  認(rèn)證碼是近來網(wǎng)站流行使用的一種技術(shù),它的目的是保證登錄網(wǎng)站的是人而不是程序,防止某些人利用程序自動登錄網(wǎng)站下載資料,過多占用網(wǎng)絡(luò)帶寬和服務(wù)器資源。
  
  采用認(rèn)證碼技術(shù)的登錄界面一般如下:
   網(wǎng)站流行技術(shù)-認(rèn)證碼技術(shù)初探(圖一)
  登錄網(wǎng)站時,系統(tǒng)會以圖象的形式顯示一個認(rèn)證碼(通常是數(shù)字),并要求用戶輸入這個認(rèn)證碼,二者相符時,用戶將成功登錄系統(tǒng),否則系統(tǒng)將提示出錯信息。
  
  二、認(rèn)證碼技術(shù)原理
  
  下面是認(rèn)證碼技術(shù)用例圖:
   網(wǎng)站流行技術(shù)-認(rèn)證碼技術(shù)初探(圖二)
  如上圖,在認(rèn)證碼技術(shù)中,系統(tǒng)角色的作用是產(chǎn)生認(rèn)證碼圖象、記錄認(rèn)證碼之值和比較認(rèn)證碼,而用戶角色只負(fù)責(zé)輸入認(rèn)證碼,供系統(tǒng)驗證使用。
  
  實現(xiàn)認(rèn)證碼技術(shù),需要以下幾方面的預(yù)備:
  
  1.生成認(rèn)證碼:
  
  我們可以讓系統(tǒng)隨機(jī)產(chǎn)生一個數(shù)字來作為認(rèn)證碼,這方面在javascript腳本語言和Java語言中均可得以實現(xiàn)。前者可以用Math.random()得到一個介于0與1之間的小數(shù),用它乘以10000再取整數(shù)部分,即可得到0至9999之間的隨機(jī)數(shù)。后者可以用Random類的nextInt(N)方法得到一個介于0至N-1之間的隨機(jī)類。
  
  在實現(xiàn)時,我們采用了前者,即用Javascript生成的隨機(jī)數(shù)作為認(rèn)證碼。主要原因是Javascript是Html內(nèi)置的腳本語言,不管頁面是前進(jìn)、后退還是刷新,都能保證及時產(chǎn)生新的認(rèn)證碼,增加了隨機(jī)性。而用JAVA實現(xiàn)時,則不具備此特性,瀏覽器還保存原先的認(rèn)證碼,隨機(jī)性不強(qiáng)。
  
  2.生成認(rèn)證碼圖象:
  
  這是比較要害的部分。幸運的是,JAVA語言給我們提供了強(qiáng)大的支持。我們可以利用BufferedImage類在內(nèi)存中繪制圖象,并可利用ImageIO類將圖象輸出到jsp頁面中。在繪制圖象時,我們就可以將隨機(jī)產(chǎn)生的認(rèn)證碼,繪制到圖象中,進(jìn)而展現(xiàn)在用戶面前。另,為了增加破譯的難度,我們可以隨機(jī)畫一些點。
  
  3.保存認(rèn)證碼:
  
  在JSP語言中,我們可以充分利用該語言內(nèi)置的session對象來保存認(rèn)證碼之值,方法是:session.setAttribute("認(rèn)證碼名字",認(rèn)證碼之值)。并可用session.getAttribute("認(rèn)證碼名字")得到系統(tǒng)保存的認(rèn)證碼之值,用來和用戶輸入的認(rèn)證碼相比較,很是方便。
  
  三、認(rèn)證碼技術(shù)的JSP實現(xiàn)
  
  1.image.jsp
  
  這個JSP程序的功能是:根據(jù)頁面參數(shù)rand生成相應(yīng)的認(rèn)證碼圖象,同時設(shè)定SESSION變量rand,以便check.jsp驗證用戶輸入的認(rèn)證碼時使用。
  
  源程序如下:
   網(wǎng)站流行技術(shù)-認(rèn)證碼技術(shù)初探(圖三)
   網(wǎng)站流行技術(shù)-認(rèn)證碼技術(shù)初探(圖四)
  
  
  
  
  2.a(chǎn).jsp
  
  這個JSP程序的功能是:顯示認(rèn)證碼,提供表單讓用戶輸入認(rèn)證碼供校驗用。注重,程序中顯示認(rèn)證碼圖象時,用了Javascript的document.write,并用了Math.random函數(shù),從而保證了認(rèn)證碼的及時更新特性。
  
  源程序如下:
  
   網(wǎng)站流行技術(shù)-認(rèn)證碼技術(shù)初探(圖五)
  
  
  3.check.jsp
  
  這個JSP程序的作用是比較用戶輸入的認(rèn)證碼與SESSION變量中保存的認(rèn)證碼,相同時提示認(rèn)證成功,否則提示認(rèn)證失敗。
  
  源程序如下:
  
  
   網(wǎng)站流行技術(shù)-認(rèn)證碼技術(shù)初探(圖六)
  
  
  
  
  
  四、測試
  
  測試用的Web服務(wù)器是Tomcat4.1。將image.jsp、a.jsp和check.jsp拷貝到ROOT目錄下,啟動Tomcat服務(wù)器,在IE瀏覽器地址欄輸入http://localhost:8080/a.jsp即可出現(xiàn)如下畫面:
   網(wǎng)站流行技術(shù)-認(rèn)證碼技術(shù)初探(圖七)
  系統(tǒng)隨機(jī)產(chǎn)生認(rèn)證碼6986,輸入6986,單擊"提交檢測",將出現(xiàn)如下畫面:
   網(wǎng)站流行技術(shù)-認(rèn)證碼技術(shù)初探(圖八)
  按"后退"鍵,系統(tǒng)又隨機(jī)產(chǎn)生了一個認(rèn)證碼:
   網(wǎng)站流行技術(shù)-認(rèn)證碼技術(shù)初探(圖九)
  輸入認(rèn)證碼1111,單擊"提交檢測",會出現(xiàn)以下錯誤畫面:
  網(wǎng)站流行技術(shù)-認(rèn)證碼技術(shù)初探(圖十)
  
  
  
  
  小結(jié):認(rèn)證碼是一項相對簡單而實用的技術(shù),為我們保證登錄網(wǎng)站用戶的合法性提供了有力的保障,隨著時間的推移,相信會有越來越多的網(wǎng)站采用這種技術(shù)的。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 调兵山市| 郯城县| 朝阳市| 瑞丽市| 句容市| 黑山县| 什邡市| 祁门县| 甘谷县| 晋宁县| 安岳县| 新丰县| 永昌县| 绿春县| 临清市| 东阳市| 曲沃县| 麦盖提县| 万州区| 明水县| 南江县| 刚察县| 涞源县| 隆回县| 鄯善县| 姜堰市| 定南县| 罗城| 兰坪| 太白县| 长沙市| 灵宝市| 潮安县| 巴塘县| 德庆县| 息烽县| 禄劝| 阿瓦提县| 前郭尔| 普宁市| 新乡县|