Re: [請益] 關於加密網頁的製作(https)

看板Soft_Job作者 (Chen John L)時間16年前 (2009/08/03 22:06), 編輯推噓7(701)
留言8則, 6人參與, 最新討論串1/1
※ 引述《whitedanube (white)》之銘言: : 想請問有相關工作經驗的網頁程式設計師,針對加密性網頁的編寫有特殊規則嗎? : 還是只是一般的網頁在SSL傳遞而已,所以沒有在用特別編碼去加密? : 最近上課老師分享最近很紅的X浪社群網站,帳號密碼透過封包擷取軟體看的到!! : 感覺很扯,但是真的看的到... : 所以想請問除了用https還有什麼方法能有效防止帳號密碼外流,網頁+演算法? : 謝謝 SSL Certificate好貴... 如果只是拿來擋密碼洩漏大概是大才小用了. 當然, 如果只是 要檔密碼洩漏的話, 可以用以下的方法. ( 以下Assume你資料庫裡面的密碼是已經Hash過的, 當然沒有Hash也可以, 只是細節要改 一下而已 ) 有一種方法叫做Challenge-Response Authentication, 他的做法就是, 在載入登入 畫面的時候, 附加一個Challenge. 而對方那邊, 密碼打進來的時候, 你先將他的密碼 Hash一遍, 再將Challenge跟之前的Hash加在一起, 然後整個再Hash一遍. 最後的結果, 連帶Challenge傳回給伺服器. 伺服器端, 將Hash過的密碼從資料庫讀出, 跟之前的 Challenge加在一起, 然後Hash一遍看一不一樣. 我們來個範例, 假設Hash用md5... 伺服器丟出的Challenge: "CHALLENGEASDFASDF1234" 密碼: "Pass" 密碼的Hash = md5( "Pass" ) = "b9b57aae83585e17ede4570dcede353c" 丟給伺服器的資料 = md5( "CHALLENGEASDFASDF1234" + "b9b57aae83585e17ede4570dcede353c" ) = md5( "CHALLENGEASDFASDF1234b9b57aae83585e17ede4570dcede353c" ) = "6cdd6d97a6a562246b64a071c84a43d1" 這時客戶端將Challenge跟md5一起丟回給伺服器, 伺服器重做一遍, 看結果一不一樣. 這個方法裡面的Challenge需要伺服器來產生. 產生的過程需要注意的是, 不要讓駭客 將偷到的Challenge跟Hash組合重複丟給伺服器讓他認證. 要避免這個, 我建議使用這個 Challenge產生方法: Challenge = blowfish( SomePrivateKey, CurrentDateTimeUpToMillisecond ); 然後, 每收到一個Challenge, 就用Blowfish解碼他, 然後看時間過了多久, 另外檢查, 這個Challenge是否已經被用來登入過了. 當然, 以上的Blowfish用AES之類的也可以. --- EDIT --- 有關Challenge Response Authentication也可以看Wikipedia: http://en.wikipedia.org/wiki/CRAM-MD5 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.133.76.65 ※ 編輯: john0312 來自: 220.133.76.65 (08/03 22:09)

08/03 22:26, , 1F
推~
08/03 22:26, 1F

08/04 00:08, , 2F
沒要求的話也可以用self signed cert.啊... 早前一堆
08/04 00:08, 2F

08/04 00:09, , 3F
FOSS下的網站都是這樣用的... :P
08/04 00:09, 3F

08/04 01:57, , 4F
冏.前提是client你要自己寫,還得強迫使用者用才可以...
08/04 01:57, 4F

08/04 02:07, , 5F
我是指CRAM
08/04 02:07, 5F

08/04 08:14, , 6F
謝謝~提供方法~
08/04 08:14, 6F

08/04 09:29, , 7F
看了大大的文章,有學到東西的感覺
08/04 09:29, 7F

08/20 21:44, , 8F
這是CHAP的protocol的做法
08/20 21:44, 8F
文章代碼(AID): #1ATkx9Gs (Soft_Job)