明輝手游網(wǎng)中心:是一個免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

網(wǎng)絡(luò)開發(fā)之編程技巧之一(有效果驗(yàn)證用戶的登錄)

[摘要]在做網(wǎng)絡(luò)關(guān)鍵事務(wù)的應(yīng)用開發(fā)中,特別是有關(guān)有特定面向性的應(yīng)用開發(fā)時(shí),我們需要考慮的問題要比單機(jī)編程多得多. 這些因擾主要是來自于幾方面: 首先,是所有基于WEB的應(yīng)用都是建立在開放系統(tǒng)上的,客戶端幾乎總能看得見你或多或少的程序源碼痕跡,雖然這對網(wǎng)絡(luò)開發(fā)的快速壯大發(fā)展起到了良好的作用,...
  在做網(wǎng)絡(luò)關(guān)鍵事務(wù)的應(yīng)用開發(fā)中,特別是有關(guān)有特定面向性的應(yīng)用開發(fā)時(shí),我們需要考慮的問題要比單機(jī)編程多得多.
這些因擾主要是來自于幾方面:
  首先,是所有基于WEB的應(yīng)用都是建立在開放系統(tǒng)上的,客戶端幾乎總能看得見你或多或少的程序源碼痕跡,雖然這對網(wǎng)絡(luò)開發(fā)的快速壯大發(fā)展起到了良好的作用,但對于許多習(xí)慣于使用傳統(tǒng)環(huán)境編程的程序員來說,可以說是一場惡夢,我們再也不能使用傳統(tǒng)慣用的明碼內(nèi)嵌方式的驗(yàn)證了,因?yàn)槲覀兯行枰尿?yàn)證材料,幾乎都能從客戶端源碼中分析出來,因而,在客戶端使用明碼驗(yàn)證思路, 在基于WEB的網(wǎng)絡(luò)開發(fā)中,顯然是行不通的。

  第二,來自瀏覽器的干擾,基于WEB的編程,不管你使用的是什么方式,你總得通過瀏覽器作為你最終的實(shí)現(xiàn)終端,這是一條誰也不能改變的客觀現(xiàn)實(shí),這樣, 瀏覽器上許多原本是為方便用戶瀏覽而設(shè)的功能, 會成為我們WEB程序的致命殺手, 舉個簡單的例子,你寫個很完美的身份驗(yàn)證頁面, 并且這個驗(yàn)證頁面的確也起到了效用,對客戶請求做了全面的驗(yàn)證,但是, 當(dāng)你的程序引導(dǎo)用戶進(jìn)入實(shí)質(zhì)性事務(wù)處理頁面時(shí), 用戶為了方便使用了瀏覽器的收藏功能,很不幸, 你若在事務(wù)處理頁面不做任何驗(yàn)證的話, 你在驗(yàn)證頁的所作的所有守護(hù)功能上的努力都成了泡影,一切形同虛設(shè),客戶下次進(jìn)入時(shí), 只需要點(diǎn)收藏頁就能進(jìn)入事務(wù)處理了,若點(diǎn)收藏頁的不是您可愛的客戶們, 而是那些活躍網(wǎng)際的天才HACKER們,你難道不覺得你的作品很失敗嗎?就我而言,我覺得這是一種對程序員的致命嘲諷,太可悲了。!

  另外, 我們還有一些來自于網(wǎng)絡(luò)上操作系統(tǒng)漏洞的困擾,當(dāng)然, 這些因素通常的影響不大,并且, 我們也幾乎對此無能為力,這方面的解決方案,我們只能求助于那些生產(chǎn)操作系統(tǒng)的大廠商,我們所能做的是,只能盡力防范來自程序本體的BUG。
說了這么多, 其實(shí)歸根也只是一點(diǎn)內(nèi)容, 那就是,基于WEB的開發(fā)讓我們走進(jìn)了一個全新的程序世界, 這個世界到處充斥著危險(xiǎn)與自由,我們該如何去面對呢?這一次我們先想個辦法把用戶驗(yàn)證做到實(shí)處吧,在用戶驗(yàn)證中, 最常用的就是IP驗(yàn)證,但是, 我個人不提倡使用直接的IP驗(yàn)證, 那樣太危險(xiǎn)了,只要稍有軟件知識就很容易找出程序是否使用了直接IP驗(yàn)證及網(wǎng)絡(luò)中其它用戶的IP值,這樣, IP驗(yàn)證就會形同虛設(shè),我想到的是IP的變碼驗(yàn)證方法, 姑且讓我這么叫吧,其實(shí)實(shí)現(xiàn)的思路并不復(fù)雜, 但卻是一種比較有效的驗(yàn)證方法,具體如下:我們把IP與登錄時(shí)間這個時(shí)刻變化的密鑰結(jié)合起來,只需要通過一些簡單的可還原代數(shù)運(yùn)算,就能生成一個不斷動態(tài)變化的密碼了,然后呢,我們再把生成密鑰的時(shí)間與密碼一起通過頁面不斷傳輸?shù)较乱惶幚砹鞒,在每個處理流程工作前都使用傳輸過來的時(shí)間及請求服務(wù)的IP對密碼進(jìn)校驗(yàn),相異則退出,這樣,我們的處理流程就會使用一個每次進(jìn)入都不同的密鑰進(jìn)行驗(yàn)證,這樣的好處就是,加密的密鑰是一個精確到秒的動態(tài)數(shù),很少有人能在有限時(shí)間內(nèi)猜中這個密鑰,這樣,即使HACKER天才們知道了你的加密算法, 他們也只能干對著屏幕光火, 因?yàn),他們無法準(zhǔn)確命中其他用戶的登錄時(shí)間,嘻嘻, 這一招黑吧!就讓HACKER去發(fā)揮聰明才智吧!哈哈,這樣, 作為網(wǎng)絡(luò)上正方的程序員們,開心笑一個吧,作為網(wǎng)絡(luò)反方的HACKER們永遠(yuǎn)也不可能在搶答時(shí)間到之前找到答案的 !!這樣就大大減少了我們被HACKER們玩弄的機(jī)率!當(dāng)然也就同時(shí)消除了大部分讓我們被用戶責(zé)難安全性問題的尷尬境地,至少會讓我們晚上睡得更安心!OK!JACK今晚還有很多事要做, 就先寫到這了!文章內(nèi)容權(quán)當(dāng)滿足一下JACK那顆不斷膨脹的虛榮心吧!親愛的朋友們,BYE!