2015-09-11 119 views
4

我運行一個HTTPS網站,並希望把這些在php.ini中,以提高安全性:會切換session.cookie_secure註銷我的用戶?

session.cookie_httponly = 1 
session.cookie_secure = 1 

我能找到很多在網絡上關於此信息,但不針對老持久性會話ID的時候打開這個。

可能切換此結果導致自動登出的用戶,因爲PHP現在預計安全的cookie,但登錄用戶沒有那些......剛切換後?

回答

0

是的,它會將它們註銷,因爲他們的會話將結束。

+1

您能詳細說明一下,還是可以列出資源? – Tieme

+1

我在一個月前遇到了確切的問題。所以我發現它很難:) –

5

在我的職業生涯中,我已經開啓了數百個使用HTTPS的網站,並且從未讓它記錄每個人。

這些.ini設置通常應用於新會話cookie,而secure標誌用於瀏覽器不知道通過純文本HTTP進行傳輸。它不應該有任何追溯後果。

session_start()的代碼調用一個名爲php_session_start()的C函數,該函數在大多數情況下爲checks $_COOKIE

Cookie處理的代碼是SAPI-dependent,但不包含任何特定的邏輯「如果未設置secure,現在放棄它,現在我們期望它」。

除了包含這個邏輯的一些奇怪的SAPI代碼之外,最有可能發生的事情是cookie不再被髮送到缺少HTTPS的HTTP端點,所以看起來好像用戶正在註銷(但只有當它們不是在任何地方使用HTTPS)。

簡而言之:

  • 不,不應註銷用戶,除非他們沒有通過HTTPS瀏覽(這是他們應該做的事)
  • 但是,如果發生,暫時的不便值得安全收益。
+1

只是爲了確認,這些標誌只用於發送到瀏覽器的'Set-Cookie'頭文件。標題指示瀏覽器將來如何使用這些cookie(例如,不可用於JS或不安全的HTTP)......當將cookie發送回服務器時,瀏覽器只發送名稱和值。服務器不知道它們被存儲爲什麼,並且如果服務器重新發送cookie(帶有這些標記),則瀏覽器將簡單地替換舊的cookie ......因此設置這些標記不會導致用戶被記錄(除非有其他問題,例如使用HTTP) –