2010-04-19 77 views
3

我目前已經構建了一個系統,用於檢查用戶IP,瀏覽器和隨機字符串cookie,以確定他是否是管理員。網絡安全:最壞情況

在最糟糕的情況下,有人竊取我的cookie,使用我使用的瀏覽器,並掩蓋他的IP顯示爲我的。我應該在腳本中添加另一層安全性以使其更安全嗎?

編輯:澄清:我的網站絕對不接受用戶輸入。我只是設計了一個後端管理面板,以便更新數據庫條目。

+0

Cookie如何設置?瀏覽器和IP地址都很容易僞造。 – Tom 2010-04-19 19:55:20

+2

使用密碼? – 2010-04-19 19:56:24

+1

這對我來說不是一個編程問題。 – 2010-04-19 19:57:34

回答

7

檢查瀏覽器是完整且絕對的代碼浪費。編寫一個安全系統trivial讓攻擊者繞過是毫無意義的。如果攻擊者通過xss或者嗅探線路獲取會話ID,那麼他們也會擁有「用戶代理」。

檢查IP地址將強制攻擊者在XSS + XHR或XSRF會話中「搭便車」。這是因爲被劫持的令牌不能在他的盒子上工作。不幸的是,這對於在多個IP地址之間使用輸出負載平衡的公司網絡也造成問題。

HTTPS是必須用於整個會話。您的令牌不能通過HTTP發送。這在「The OWASP Top 10 for 2010」中的「Broken Authentication and Session Management」中有詳細說明,如果您正在編寫會話處理程序,那麼您絕對必須閱讀它。

會話ID必須始終超時。如果他們不這樣做,那麼這稱爲永久會話,這是一個公認的漏洞。

進一步我更關心你的令牌的隨機性。確保你的研究如何正確生成cryptographic nonce。確保你的隨機數發生器是強大的,並用攻擊者無法知道的信息播種。

我還懷疑你沒有考慮到XSS和XSRF。無論您在其他方面進行會話的強度如何,如果您未選中一個主要漏洞,都無關緊要。確保你使用a free xss scanner或開源的wapiti掃描你的應用程序。請記住,沒有測試會準確檢測到XSRF,並且除非您專門對其進行了修補,否則應用程序中的每個請求都很脆弱。

+3

非常非常非常好的帖子,https爲+1,owasp前10提到+1,超時+1,加密隨機+2。不幸的是,這加起來就是1 :(:) – Henri 2010-04-19 20:43:05

+0

@Henri LOL,我很高興你同意我的觀點:) – rook 2010-04-19 21:03:34

4

保護管理員訪問的正確方法是使用HTTPS

有針對HTTPS兩種攻擊:

  1. Trojan on your machine
  2. Man-in-the-middle uses legitimate yet malicious certificates

顯然,(1)是最有可能的。但另一方面,您的特洛伊木馬很可能會在您的銀行詳細信息之後出現,攻擊者不會通過所有的東西來篩選和探索您與管理網站的關係。

很明顯,如果攻擊者是複雜的(2),那麼你的位置並不佔優勢。

這是一個小的攻擊面,你可以得到。

+0

+1 https,請確保它用於**整個會話**在任何時候都不能通過http發送令牌。 – rook 2010-04-19 20:15:52

+0

通過使用客戶端證書進行身份驗證,您可以做得更好。或者,如果您希望做得更好,則可以使用存儲在智能卡上的私鑰的客戶端證書。 (這就是我的國家處理網上銀行和政府服務的方式) – 2010-04-19 20:16:23

+0

當然,您希望僅將您的Cookie設置爲僅限https。 – 2010-04-19 21:27:32

1

Https是必須的,但您也必須接受這樣的事實:沒有網站可以100%安全。讓您在安全性方面獲得重大改進的唯一方法是擁有非常短的會話超時時間,併爲您的用戶提供硬件令牌,但即使令牌可能也會被盜用。

+0

+1會話超時。 – rook 2010-04-19 20:15:14

1

除了所提到的一切之外,我還想念一件事是解決「所有其他安全問題」。

  • 如果你有一個SQL注入,你在cookies上的努力是浪費時間。
  • 如果你有一個XSRF陰險,你努力的餅乾是浪費時間。
  • 如果你有XSS,...
  • 如果你有HPP,...
  • 如果你.... ....

你明白了吧。

如果您確實想要涵蓋所有內容,我建議您清楚地瞭解漏洞情況並構建攻擊樹(Bruce Schneier)。

+0

+1 Bruce Schneier是皮條客。 – rook 2010-04-19 21:05:49