研究了幾天session安全,得出幾個觀點,請指正:
- 可以xss通過獲得cookie資訊,包含sessionid
- 可以通過截取http,獲得header資訊,包含sessionid
- 以上兩種法都有一定條件和難度
- 如果服務端單靠sessionid識別會話資訊,那麼通過xss擷取了sessionid後,會泄露使用者資訊,如果再通過ip,useragent資訊加以校正,可以減少風險
- 如果截取了http,換用https方式可以減少風險
- 即便是使用https,ssl認證也是可以偽造
結論:
- xss漏洞更低級一些,但是造成的風險很大。
- http截取,截取範圍很小,風險小。當然,截取到admin的資訊,那就不一樣了。
- http截取/ssl認證偽造的技術要求、環境要求較高,防治的成本也大。
回複內容:
研究了幾天session安全,得出幾個觀點,請指正:
- 可以xss通過獲得cookie資訊,包含sessionid
- 可以通過截取http,獲得header資訊,包含sessionid
- 以上兩種法都有一定條件和難度
- 如果服務端單靠sessionid識別會話資訊,那麼通過xss擷取了sessionid後,會泄露使用者資訊,如果再通過ip,useragent資訊加以校正,可以減少風險
- 如果截取了http,換用https方式可以減少風險
- 即便是使用https,ssl認證也是可以偽造
結論:
- xss漏洞更低級一些,但是造成的風險很大。
- http截取,截取範圍很小,風險小。當然,截取到admin的資訊,那就不一樣了。
- http截取/ssl認證偽造的技術要求、環境要求較高,防治的成本也大。
好吧,從來就沒有絕對安全的事兒.
可以xss通過獲得cookie資訊,包含sessionidkey:cookie有自己的httpOnly.(之前apache也曝過一個漏洞:發送的cookie過長會把cookie給返回,即使httpOnly,現在已經修複)退一步講,你應該首先避免xss漏洞.
可以通過截取http,獲得header資訊,包含sessionidkey:改用https,防止中間人(這個也沒有絕對的安全,SSL認證也曾被駭客偽造,不過一般人可幹不了這個事兒)
如果服務端單靠sessionid識別會話資訊,那麼通過xss擷取了sessionid後,會泄露使用者資訊,如果再通過ip,useragent資訊加以校正,可以減少風險
key:可以避免他拿到了session後在自己的ip上實現.不過,既然他都拿到xss了,對於跨站師來說,拿使用者資訊幾乎不費吹灰之力,關鍵是如何避免XSS,大門都給小偷開啟了,你還想著要給保險箱上一把鎖,現在的小偷可是拿的是大鐵鍾!
如果截取了http,換用https方式可以減少風險
嗯,我同意
- 即便是使用https,ssl認證也是可以偽造Key: 成功偽造認證的人少之又少.SSL相對絕大部分應用來說,其安全性已經足夠了.
綜上,session的本身的安全在於外圍的安全性.其本身是安全的.安全的會話機制最關鍵的還是要避免一些常見的漏洞:XSS,CSRF(這隻是我經常遇到的,無論大站還是小站,這方面問題最多)
- XSS可以通過給sessionid cookie設定 httponly 來防止。
- 監聽http包的,校正IP是一種還不錯的辦法。因為通常用session做登入都不會持續很長時間,IP通常不會發生變化。admin登入的話,最好不要與前台系統做在一起,獨立網域名稱、特殊連接埠、限制IP/VPN內網、手機簡訊隨機驗證碼等等方法都可以增強安全性。
- https的偽造認證監聽,這個貌似只能擷取到被欺騙使用者提交的資料,因為認證本身驗證的是伺服器端的可信度。當然如果已經把用戶端與服務端網路完全切斷,加入了中間代理並偽造了伺服器憑證,這個應該仍然可以通過認證IP、SSL用戶端認證來解決……這個不是很明白,懇請大神講解。
另外,sessionid的隨機性不夠被猜到也是session的潛在安全問題之一。