2014-03-06 72 views
22

剛剛收到安全審覈的結果 - 除了兩件事情之外,一切都清楚了會話cookie http&secure標誌 - 你如何設置這些?

沒有http標誌的會話cookie。

未設置安全標誌的會話cookie。

該應用程序是在PHP編碼和修復建議是:以http唯一標誌

  1. 組會話cookie
  2. 與安全標誌設置會話cookie

我看過的例子但不完全瞭解如何在Linux服務器上實現。我無權訪問.ini文件。是否有可能在htaccess文件中設置這些?

或者,我在代碼中如何以及在哪裏實現?

+0

你應該在哪裏發送你的會話cookie或者哪個機制設置它?那就是你應該實現這個的地方。 – eis

+0

如果你正在談論默認的PHPSESSID cookie,這個問題聽起來像是[this]的重複(http://stackoverflow.com/questions/6821883/set-httponly-and-secure-on-phpsessid-cookie-in- php) – eis

+0

它的代碼被設置並用於登錄和檢索用戶數據。它可以在htaccess文件中設置嗎? – Jeff

回答

24

既然你問的.htaccess,而這個設置是PHP_INI_ALL,只是把這個在你的.htaccess:

php_value session.cookie_httponly 1 
php_value session.cookie_secure 1 

注意,會話cookie將只與後HTTPS請求發送。如果你在非安全的http頁面中失去一個會話,這可能會讓你感到意外(但像評論中指出的那樣,首先是配置的重點......)。

+1

是「令人討厭的驚喜」的東西,當然它總是值得警告人們:)但是防止通過http發送會話cookie是這裏練習的一點。 – John

25

您可以在發送標題之前設置它們。只需在你的代碼中添加下面的這一行。

<?php 
// **PREVENTING SESSION HIJACKING** 
// Prevents javascript XSS attacks aimed to steal the session ID 
ini_set('session.cookie_httponly', 1); 

// **PREVENTING SESSION FIXATION** 
// Session ID cannot be passed through URLs 
ini_set('session.use_only_cookies', 1); 

// Uses a secure connection (HTTPS) if possible 
ini_set('session.cookie_secure', 1); 
-2

設置session.use_only_cookies = 1將有幫助,因爲它確保只使用cookie,但是這可能會導致在處理涉及切換站點的事務時出現問題,即siteA轉發到站點B以進行付款,該站點轉發到站點A以表示感謝,在這種情況下,可以使用PHP會話ID通知來恢復舊會話。

+0

這與問題完全無關。 – Quentin

+0

這不提供問題的答案。一旦你有足夠的[聲譽](https://stackoverflow.com/help/whats-reputation),你將可以[對任何帖子發表評論](https://stackoverflow.com/help/privileges/comment);相反,[提供不需要提問者澄清的答案](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- I-DO-代替)。 –