設置COOKIE
setcookie ( string $name [, string $value = "" [, int $expire = 0 [, string $path = "" [, string $domain = "" [, bool$secure = false [, bool $httponly = false ]]]]]] )
setcookie() 定義了 Cookie,會和剩下的 HTTP 頭一起發送給客戶端。 和其他 HTTP 頭一樣,必須在腳本產生任意輸出之前發送 Cookie(由於協議的限制)。 請在產生任何輸出之前(包括 <html> 和 <head> 或者空格)調用本函數。
進一步增加COOKIE的安全
1. 在上面的函數中有兩個參數, secure設置為true讓其僅通過安全連接發送 cookie, httponly設置為true讓其標記為只能通過HTTP協議訪問, 阻止腳本語言編輯的腳本訪問cookie, 減少通過XSS攻擊進行的身份竊取。還可以在php.ini中設置session.cookie_secure為true, session.cookie_httponly為true
2. 每次用戶登錄之后更新cookie中的sessionid, 生成新的sessionid, 清除cookie和session的代碼如下:
session_start();
$_SESSION = array(); //清除SESSION值.
if(isset($_COOKIE[session_name()])){ //判斷客戶端的cookie文件是否存在,存在的話將其設置為過期.
setcookie(session_name(),'',time()-1,'/');
}
session_destroy();
表單驗證防止csrf攻擊
1. 增加token, 用戶登錄后, 可以將所有鏈接到本站的a鏈接和form表單增加一個token, 保存在session中, 請求時進行token驗證, 每次使用之后進行變更
2 .驗證HTTP Referer域名, 除白名單之外的來源地址進行攔截
