2016-03-01 37 views
2

我目前正試圖想辦法讓用戶登錄一段時間。我遇到了使用網站cookie的情況。作爲例子,我的開發環境是PHP網站Cookie - 是否有任何安全問題?

addcookie('name', 'value', time() + 3600, '/');

據我所知,您可以生成一個大的,獨特的鍵作爲其存儲在數據庫中的每個用戶價值,對於安全的參考,然後唯一的辦法真正來操作用戶會會話竊取使用跨站點腳本。

我很好奇地想知道,由於在addcookie()的最後一個參數 - 其中/存在於例子 - 它可能是有人建立自己的域名,實際上添加自己的cookie到另一個域?

我不確定在數據庫中查詢密鑰之前是否剝離密鑰,因爲我不確定此漏洞是否存在 - 或者類似的。

任何參考將是偉大的,因爲安全是我覺得很有趣,特別是未經授權的訪問預防。

我只知道Cookie中毒的任何信息,並且很想了解更多信息,以及如何防止事件或構建防止此類攻擊的基礎架構。

編輯:我不是問如何Secure什麼,只是什麼的Cookie中毒,也許方式,可以用來防止人們真正能夠做到這一點

+1

只要cookie的域設置,只受到攻擊的方式可以通過XSS或訪問存儲cookie的計算機來實現。 – aron9forever

+0

看,我一直在研究,而我所看到的恰恰相反。顯然,可以使用名爲「數據篡改」的東西來「編輯」cookies。這被用來改變購物車的價格,試圖欺騙基礎設施的價格,以免它一無所獲。 @ aron9forever – KDOT

+1

爲了確保我瞭解,您所描述的情況是1)我訪問你的網站,得到一個cookie 2)我訪問另一個網站,與您的Cookie 3)干預我再次訪問你的網站和不順心的事。如果這是正確的,那麼不,那是不可能的。首先是因爲第二個網站無法訪問您的Cookie,甚至被第二網站發送的腳本不能由於現代瀏覽器的安全性實現訪問您的Cookie。但是我的評論意味着你沒有XSS漏洞在您的網站這種現象被稱爲「跨站點烹飪」 – aron9forever

回答

2

正如你(哪怕它只是提示!)通過跨站點腳本(XSS)劫持上述會話十分常見。

爲了防止XSS,您應該在將它們打印到屏幕前始終過濾並轉義所有用戶會話值。然而,一些錯誤可能會漏掉,或者一段遺留代碼可能很脆弱,因此也可以利用瀏覽器對XSS的保護。

通過在設置會話cookie時指定HttpOnly標誌,您可以告訴用戶瀏覽器不要將cookie暴露給客戶端腳本,如JavaScript。這使攻擊者難以劫持會話ID並僞裝成受影響的用戶。

session.cookie_httponly = 1 

這也是一個不錯的主意,以確保PHP只使用Cookie的會話,並禁止會話ID傳遞的GET參數:

session.use_only_cookies = 1 

另一個重要的方法來增加PHP會話安全在您的應用程序中是在Web服務器上安裝SSL證書,並強制所有用戶交互僅通過HTTPS進行。

有益地PHP有一個INI設置,以幫助您確保會話cookie只通過安全連接發送:

session.cookie_secure = 1 

編號:https://www.simonholywell.com/post/2013/05/improve-php-session-cookie-security/

+1

這是一個很好的信息來源,並完美解釋!關於登錄密鑰,如果我直接將它傳遞給查詢,是否最好將其中的字符去掉?因爲如果我正確閱讀,我認爲第二個網站可以「改變」cookie? – KDOT

+1

@ KyleE4K你是對的.Strip是一個不錯的選擇。你可以閱讀更多:https://www.smashingmagazine.com/2011/01/keeping-web-users-safe-by-sanitizing-input-data/ – Aajan

+1

如此瘋狂的事情如此之少以至於錯過了可能導致這樣重大漏洞!感謝所有的幫助! – KDOT