設置 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

最後修改日期: 2019 年 12 月 19 日