在做網絡關鍵事務的應用開發中,特別是有關有特定面向性的應用開發時,我們需要考慮的問題要比單機編程多得多.
這些因擾主要是來自於幾方面:
首先,是所有基於WEB的應用都是建立在開放系統上的,客戶端幾乎總能看得見你或多或少的程序源碼痕跡,雖然這對網絡開發的快速壯大發展起到了良好的作用,但對於許多習慣於使用傳統環境編程的程序員來說,可以說是一場惡夢,我們再也不能使用傳統慣用的明碼內嵌方式的驗證了,因為我們所有需要的驗證材料,幾乎都能從客戶端源碼中分析出來,因而,在客戶端使用明碼驗證思路, 在基於WEB的網絡開發中,顯然是行不通的。
第二,來自浏覽器的干擾,基於WEB的編程,不管你使用的是什麼方式,你總得通過浏覽器作為你最終的實現終端,這是一條誰也不能改變的客觀現實,這樣, 浏覽器上許多原本是為方便用戶浏覽而設的功能, 會成為我們WEB程序的致命殺手, 舉個簡單的例子,你寫個很完美的身份驗證頁面, 並且這個驗證頁面的確也起到了效用,對客戶請求做了全面的驗證,但是, 當你的程序引導用戶進入實質性事務處理頁面時, 用戶為了方便使用了浏覽器的收藏功能,很不幸, 你若在事務處理頁面不做任何驗證的話, 你在驗證頁的所作的所有守護功能上的努力都成了泡影,一切形同虛設,客戶下次進入時, 只需要點收藏頁就能進入事務處理了,若點收藏頁的不是您可愛的客戶們, 而是那些活躍網際的天才HACKER們,你難道不覺得你的作品很失敗嗎?就我而言,我覺得這是一種對程序員的致命嘲諷,太可悲了!!!
另外, 我們還有一些來自於網絡上操作系統漏洞的困擾,當然, 這些因素通常的影響不大,並且, 我們也幾乎對此無能為力,這方面的解決方案,我們只能求助於那些生產操作系統的大廠商,我們所能做的是,只能盡力防范來自程序本體的BUG。
說了這麼多, 其實歸根也只是一點內容, 那就是,基於WEB的開發讓我們走進了一個全新的程序世界, 這個世界到處充斥著危險與自由,我們該如何去面對呢?這一次我們先想個辦法把用戶驗證做到實處吧,在用戶驗證中, 最常用的就是ip驗證,但是, 我個人不提倡使用直接的IP驗證, 那樣太危險了,只要稍有軟件知識就很容易找出程序是否使用了直接IP驗證及網絡中其它用戶的IP值,這樣, IP驗證就會形同虛設,我想到的是IP的變碼驗證方法, 姑且讓我這麼叫吧,其實實現的思路並不復雜, 但卻是一種比較有效的驗證方法,具體如下:我們把IP與登錄時間這個時刻變化的密鑰結合起來,只需要通過一些簡單的可還原代數運算,就能生成一個不斷動態變化的密碼了,然後呢,我們再把生成密鑰的時間與密碼一起通過頁面不斷傳輸到下一處理流程,在每個處理流程工作前都使用傳輸過來的時間及請求服務的IP對密碼進校驗,相異則退出,這樣,我們的處理流程就會使用一個每次進入都不同的密鑰進行驗證,這樣的好處就是,加密的密鑰是一個精確到秒的動態數,很少有人能在有限時間內猜中這個密鑰,這樣,即使HACKER天才們知道了你的加密算法, 他們也只能干對著屏幕光火, 因為,他們無法准確命中其他用戶的登錄時間,嘻嘻, 這一招黑吧!就讓HACKER去發揮聰明才智吧!哈哈,這樣, 作為網絡上正方的程序員們,開心笑一個吧,作為網絡反方的HACKER們永遠也不可能在搶答時間到之前找到答案的 !!!這樣就大大減少了我們被HACKER們玩弄的機率!當然也就同時消除了大部分讓我們被用戶責難安全性問題的尴尬境地,至少會讓我們晚上睡得更安心!OK!JACK今晚還有很多事要做, 就先寫到這了!文章內容權當滿足一下JACK那顆不斷膨脹的虛榮心吧!親愛的朋友們,BYE!