網(wǎng)絡(luò)開發(fā)之編程技巧之一(有效果驗(yàn)證用戶的登錄)
發(fā)表時(shí)間:2024-06-14 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]在做網(wǎng)絡(luò)關(guān)鍵事務(wù)的應(yīng)用開發(fā)中,特別是有關(guān)有特定面向性的應(yīng)用開發(fā)時(shí),我們需要考慮的問題要比單機(jī)編程多得多. 這些因擾主要是來自于幾方面: 首先,是所有基于WEB的應(yīng)用都是建立在開放系統(tǒng)上的,客戶端幾乎總能看得見你或多或少的程序源碼痕跡,雖然這對(duì)網(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)上的,客戶端幾乎總能看得見你或多或少的程序源碼痕跡,雖然這對(duì)網(wǎng)絡(luò)開發(fā)的快速壯大發(fā)展起到了良好的作用,但對(duì)于許多習(xí)慣于使用傳統(tǒng)環(huán)境編程的程序員來說,可以說是一場惡夢(mèng),我們?cè)僖膊荒苁褂脗鹘y(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è)的功能, 會(huì)成為我們WEB程序的致命殺手, 舉個(gè)簡單的例子,你寫個(gè)很完美的身份驗(yàn)證頁面, 并且這個(gè)驗(yàn)證頁面的確也起到了效用,對(duì)客戶請(qǐng)求做了全面的驗(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們,你難道不覺得你的作品很失敗嗎?就我而言,我覺得這是一種對(duì)程序員的致命嘲諷,太可悲了!!
另外, 我們還有一些來自于網(wǎng)絡(luò)上操作系統(tǒng)漏洞的困擾,當(dāng)然, 這些因素通常的影響不大,并且, 我們也幾乎對(duì)此無能為力,這方面的解決方案,我們只能求助于那些生產(chǎn)操作系統(tǒng)的大廠商,我們所能做的是,只能盡力防范來自程序本體的BUG。
說了這么多, 其實(shí)歸根也只是一點(diǎn)內(nèi)容, 那就是,基于WEB的開發(fā)讓我們走進(jìn)了一個(gè)全新的程序世界, 這個(gè)世界到處充斥著危險(xiǎn)與自由,我們?cè)撊绾稳ッ鎸?duì)呢?這一次我們先想個(gè)辦法把用戶驗(yàn)證做到實(shí)處吧,在用戶驗(yàn)證中, 最常用的就是IP驗(yàn)證,但是, 我個(gè)人不提倡使用直接的IP驗(yàn)證, 那樣太危險(xiǎn)了,只要稍有軟件知識(shí)就很容易找出程序是否使用了直接IP驗(yàn)證及網(wǎng)絡(luò)中其它用戶的IP值,這樣, IP驗(yàn)證就會(huì)形同虛設(shè),我想到的是IP的變碼驗(yàn)證方法, 姑且讓我這么叫吧,其實(shí)實(shí)現(xiàn)的思路并不復(fù)雜, 但卻是一種比較有效的驗(yàn)證方法,具體如下:我們把IP與登錄時(shí)間這個(gè)時(shí)刻變化的密鑰結(jié)合起來,只需要通過一些簡單的可還原代數(shù)運(yùn)算,就能生成一個(gè)不斷動(dòng)態(tài)變化的密碼了,然后呢,我們?cè)侔焉擅荑的時(shí)間與密碼一起通過頁面不斷傳輸?shù)较乱惶幚砹鞒,在每個(gè)處理流程工作前都使用傳輸過來的時(shí)間及請(qǐng)求服務(wù)的IP對(duì)密碼進(jìn)校驗(yàn),相異則退出,這樣,我們的處理流程就會(huì)使用一個(gè)每次進(jìn)入都不同的密鑰進(jìn)行驗(yàn)證,這樣的好處就是,加密的密鑰是一個(gè)精確到秒的動(dòng)態(tài)數(shù),很少有人能在有限時(shí)間內(nèi)猜中這個(gè)密鑰,這樣,即使HACKER天才們知道了你的加密算法, 他們也只能干對(duì)著屏幕光火, 因?yàn),他們無法準(zhǔn)確命中其他用戶的登錄時(shí)間,嘻嘻, 這一招黑吧!就讓HACKER去發(fā)揮聰明才智吧!哈哈,這樣, 作為網(wǎng)絡(luò)上正方的程序員們,開心笑一個(gè)吧,作為網(wǎng)絡(luò)反方的HACKER們永遠(yuǎn)也不可能在搶答時(shí)間到之前找到答案的 。!這樣就大大減少了我們被HACKER們玩弄的機(jī)率!當(dāng)然也就同時(shí)消除了大部分讓我們被用戶責(zé)難安全性問題的尷尬境地,至少會(huì)讓我們晚上睡得更安心!OK!JACK今晚還有很多事要做, 就先寫到這了!文章內(nèi)容權(quán)當(dāng)滿足一下JACK那顆不斷膨脹的虛榮心吧!親愛的朋友們,BYE!