http與socket驗證的區別
這是很基礎的概念,之前沒怎么弄過http。對于自己,算是做個筆記吧。
一、socket安全驗證
socket鏈接是握手之后就一直連著,所以這條鏈接在第一包驗證之后,之后這條鏈接不需要再驗證。“第一個包”可能描述不準確,因為有時候第一包不一定就驗證,可能是做路由之類。這里就不管這種情況了,只管第一個包直接驗證的情況。
可以理解為server接受到client的鏈接,并且驗證通過(如用戶及密碼對了)這個client鏈接后。以后這個client發過來的包,server都直接做邏輯處理而不再需要做驗證鏈接合法性。這個信任是直到鏈接斷開的。
如果非法客戶端來模擬登陸,至少需要得到有效的id及密碼,這已經是密碼自身安全的事情,不涉及這里談的鏈接安全性。
如果非法客戶端用正確的id及密碼登陸后,發些非法包,這里的包驗證應該是服務器上包處理時的包檢查及邏輯檢查的事,就是通常的游戲說的防刷(包頻率、包里數據的合法范圍等)。
二、http的安全驗證
這里只關心http的短連接。
短連接就是每次建立鏈接-發包-斷開。同一client的前后兩次發到server的包,也相當于獨立的兩次,同一client的驗證就需要每個http請求都要驗證下。于是有了session和cookie。cookie是將client的標識放在client端,常用于server沒有賬戶密碼驗證的方式。這里不討論cookie。
server在第一個http請求驗證client后,給他分配一個session。這個session簡單的可以理解為server和client約定的一個client憑證(有有效期)。之后client在每個請求里加上這個session里規定的值,例如一個合適長度的隨機字符串。
這里的session不能有讓惡意用戶很容易破解的規律,例如用戶的id之類的。所以上邊提到隨機字符串之類的。
posted on 2014-01-10 13:53 Sheppard Y 閱讀(1775) 評論(0) 編輯 收藏 引用 所屬分類: 網絡編程