設置 httponly
在 PHP 5.1 和之前的版本在 header 設置
<?php header("Set-Cookie: hidden=value; httpOnly"); ?>
在 PHP 5.2 和更高的版本 Cookie 參數可以在 php.ini 檔中定義
session.cookie_httponly = true
或者 直接在 PHP 程式中加入
ini_set("session.cookie_httponly", 1);
或者 在調用 session_start() 之前調用 session_set_cookie_params() 函數設置
<?php
private function startSession($time = 3600, $ses = 'MYSESSION_NAME') {
session_set_cookie_params($time);
session_name($ses);
session_start();
if (isset($_COOKIE[$ses]))
//第五個參數 設置為true
setcookie($ses, $_COOKIE[$ses], time() + $time, "/", true);
}
?>
Apache httpd.conf 設定
上述方法僅能設定到 Set-Cookie: HttpOnly (僅阻止 javascript 直接存取 cookie)
所以需要在apache設定檔內加上下述一行, 並重新啟動 apache
若是 apache 版本 >= 2.2.4
Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure
若是 apache 版本 < 2.2.4
Header set Set-Cookie HttpOnly;Secure
這樣就可以避免 javascript 與不安全的 http 連線存取 cookie