Cookie詳解整理

1.Cookie的誕生

由于HTTP協議是無狀態的,而服務器端的業務必須是要有狀態的。Cookie誕生的最初目的是為了存儲web中的狀態信息,以方便服務器端使用。比如判斷用戶是否是第一次訪問網站。目前最新的規范是RFC 6265,它是一個由瀏覽器服務器共同協作實現的規范。

2.Cookie的處理分為:
1.服務器像客戶端發送cookie
2.瀏覽器將cookie保存
3之后每次http請求瀏覽器都會將cookie發送給服務器端,服務器端的發送與解析

3.發送cookie
服務器端像客戶端發送Cookie是通過HTTP響應報文實現的,在Set-Cookie中設置需要像客戶端發送的cookie,cookie格式如下:

Set-Cookie: "name=value;domain=.domain.com;path=/;expires=Sat, 11 Jun 2016 11:29:42 GMT;HttpOnly;secure"

其中name=value是必選項,其它都是可選項。Cookie的主要構成如下:

name:一個唯一確定的cookie名稱。通常來講cookie的名稱是不區分大小寫的。
value:存儲在cookie中的字符串值。最好為cookie的name和value進行url編碼
domain:cookie對于哪個域是有效的。所有向該域發送的請求中都會包含這個cookie信息。

這個值可以包含子域(如:xx.xxx.com),也可以不包含它(如:.xxx.com,則對于aliyun.com的所有子域都有效).
path: 表示這個cookie影響到的路徑,瀏覽器跟會根據這項配置,像指定域中匹配的路徑發送cookie。
expires:失效時間,表示cookie何時應該被刪除的時間戳(也就是,何時應該停止向服務器發送這個cookie)。如果不設置這個時間戳,瀏覽器會在頁面關閉時即將刪除所有cookie;不過也可以自己設置刪除時間。這個值是GMT時間格式,如果客戶端和服務器端時間不一致,使用expires就會存在偏差。
max-age: 與expires作用相同,用來告訴瀏覽器此cookie多久過期(單位是秒),而不是一個固定的時間點。正常情況下,max-age的優先級高于expires。
HttpOnly: 告知瀏覽器不允許通過腳本document.cookie去更改這個值,同樣這個值在document.cookie中也不可見。但在http請求張仍然會攜帶這個cookie。注意這個值雖然在腳本中不可獲取,但仍然在瀏覽器安裝目錄中以文件形式存在。這項設置通常在服務器端設置。
secure: 安全標志,指定后,只有在使用SSL鏈接時候才能發送到服務器,如果是http鏈接則不會傳遞該信息。就算設置了secure 屬性也并不代表他人不能看到你機器本地保存的 cookie 信息,所以不要把重要信息放cookie就對了服務器端設置

?

4.cookie分類:
Cookie總是保存在客戶端中,按在客戶端中的存儲位置,可分為內存Cookie和硬盤Cookie。
當cookie沒有設置expires或者設置為0時,就形成了內存Cookie,內存Cookie由瀏覽器維護,保存在內存中,瀏覽器關閉后就消失了,其存在時間是短暫的。

硬盤Cookie保存在硬盤里,有一個過期時間,除非用戶手工清理或到了過期時間,硬盤Cookie不會被刪除,其存在時間是長期的。
所以,按存在時間,可分為非持久Cookie和持久Cookie。

?

5.Cookie的缺陷:

Cookie會被附加在每個HTTP請求中,所以無形中增加了流量。
由于在HTTP請求中的Cookie是明文傳遞的,所以安全性成問題。(除非用HTTPS)
Cookie的大小限制在4KB左右。對于復雜的存儲需求來說是不夠用的

用戶可以改變瀏覽器的設置,以使用Cookies。
如果在一臺計算機中安裝多個瀏覽器,每個瀏覽器都會以獨立的空間存放Cookie。因為Cookie中不但可以確認用戶信息,還能包含計算機和瀏覽器的信息,所以一個用戶使用不同的瀏覽器登錄或者用不同的計算機登錄,都會得到不同的Cookie信息,另一方面,對于在同一臺計算機上使用同一瀏覽器的多用戶群,Cookie不會區分他們的身份,除非他們使用不同的用戶名登錄。

?

6.腳本攻擊:

盡管cookie沒有病毒那么危險,但它仍包含了一些敏感信息:用戶名,計算機名,使用的瀏覽器和曾經訪問的網站。用戶不希望這些內容泄漏出去,尤其是當其中還包含有私人信息的時候。
這并非危言聳聽,一種名為跨站點腳本攻擊(Cross site scripting)可以達到此目的。通常跨站點腳本攻擊往往利用網站漏洞在網站頁面中植入腳本代碼或網站頁面引用第三方法腳本代碼,均存在跨站點腳本攻擊的可能,在受到跨站點腳本攻擊時,腳本指令將會讀取當前站點的所有 Cookie 內容(已不存在 Cookie 作用域限制),然后通過某種方式將 Cookie 內容提交到指定的服務器(如:AJAX)。一旦 Cookie 落入攻擊者手中,它將會重現其價值。

?

7.建議開發人員在向客戶端 Cookie 輸出敏感的內容時(譬如:該內容能識別用戶身份):
1)設置該 Cookie 不能被腳本讀取,這樣在一定程度上解決上述問題。
2)對 Cookie 內容進行加密,在加密前嵌入時間戳,保證每次加密后的密文都不一樣(并且可以防止消息重放)。
3)客戶端請求時,每次或定時更新 Cookie 內容(即:基于第2小條,重新加密)
4)每次向 Cookie 寫入時間戳,數據庫需要記錄最后一次時間戳(防止 Cookie 篡改,或重放攻擊)。
5)客戶端提交 Cookie 時,先解密然后校驗時間戳,時間戳若小于數據數據庫中記錄,即意味發生攻擊。

基于上述建議,即使 Cookie 被竊取,卻因 Cookie 被隨機更新,且內容無規律性,攻擊者無法加以利用。另外利用了時間戳另一大好處就是防止 Cookie 篡改或重放。
Cookie 竊取:搜集用戶cookie并發給攻擊者的黑客。攻擊者將利用cookie信息通過合法手段進入用戶帳戶。
Cookie 篡改:利用安全機制,攻擊者加入代碼從而改寫 Cookie 內容,以便持續攻擊。

?

轉載于:https://www.cnblogs.com/joshua317/p/6656692.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/252983.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/252983.shtml
英文地址,請注明出處:http://en.pswp.cn/news/252983.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

驍龍820和KryoCPU:異構計算與定制計算的作用 【轉】

本文轉載自:https://www.douban.com/group/topic/89037625/ Qualcomm驍龍820處理器專為提供創新用戶體驗的頂級移動終端而設計。為實現消費者所期望的創新,移動處理器必須滿足日益增長的計算需求且降低功耗,同時還要擁有比以往更低的溫度&…

LNMP

準備工作 建立一個軟件包目錄存放 mkdir -p /usr/local/src/ 清理已經安裝包 rpm -e httpd rpm -e mysql rpm -e php yum -y remove httpd yum -y remove mysql yum -y remove php #搜索apache包 rpm -qa http* #強制卸載apache包 rpm -e --nodeps 查詢出來的文件名 #檢查是否卸…

算法復習——計算幾何基礎(zoj1081)

題目: Statement of the Problem Several drawing applications allow us to draw polygons and almost all of them allow us to fill them with some color. The task of filling a polygon reduces to knowing which points are inside it, so programmers have …

亞馬遜Rekognition發布針對人臉檢測、分析和識別功能的多項更新

今天亞馬遜Rekognition針對人臉檢測、分析和識別功能推出了一系列更新。這些更新將為用戶帶來多項能力的改今,包括從圖像中檢測出更多人臉、執行更高精度的人臉匹配以及獲得圖像中的人臉得到更準確的年齡、性別和情感屬性。Amazon Rekognition的客戶可以從今天開始使…

(轉)CentOS分區操作詳解

CentOS分區操作詳解 原文:http://blog.csdn.net/yonggeit/article/details/77924393 磁盤分區 分區格式的兩種選擇:MBR和GPT 分區命令: parted的操作都是實時生效的,小心使用,主要是用于大于2T硬盤,支持MBR…

linux驅動中地址空間轉換

在linux kernel 中,物理地址是不能直接使用的,必須通過轉換才可以。轉換分為兩種, 靜態和動態。 靜態就是下面那種,不過,靜態的地址轉換,還需要在kernel 初始化的時候作映射。 動態映射是使用 ioremap 函…

getClass()和.class的區別

getClass()和.class的區別 在學習反射時想到了這個問題,.getClass()和.class有沒有什么區別? 當然,最明顯的區別就是.getClass()是一個對象實例的方法,只有對象實例才有這個方法,具體的類是沒有的。類的Class類實例是通…

華為敏捷 DevOps 實踐:產品經理如何開好敏捷回顧會議

開篇小故事:前幾年,一本叫《沉思錄》的書在國內突然曝光度很多,因為前某國家領導人“擺案頭,讀百遍”。《沉思錄》是古羅馬皇帝馬可奧勒寫給自己的書,內容大部分是在鞍馬勞頓中寫的。其實有一句“我們所聽到的不過只是…

斐波那契數列的鬼畜的性質

斐波那契數列的鬼畜的性質 斐波那契數列定理1 \(gcd(f[i],f[i1])1\) 利用輾轉相減法 證明:\(gcd(f[i],f[i1])\)\(gcd(f[i1]-f[i],f[i])\)\(gcd(f[i-1],f[i])\)\(....\)\(gcd(f[1],f[2])1\) 斐波那契數列定理2 \(f[mn]f[m-1]f[n]f[m]f[n1]\) 證明:\(f[mn]…

xml與java對象轉換 -- XStreamAlias

XStreamAlias使用 一、 特點: 簡化的API; 無映射文件; 高性能,低內存占用; 整潔的XML; 不需要修改對象;支持內部私有字段,不需要setter/getter方法 提供序列化接口; 自定義轉換類型策略; XStream的優點很多,但是也有一些小bug,比如在定義別名中的下劃線…

windows下安裝zabbix_agent

Server端在linux系統上,server端版本為2.2.6,是以前就裝好的已經跑了很久的穩定版。目前的需求是要將新業務的服務器添加到該監控隊列。而這些服務器是windows系統。 第一次下載了最新版的zabbix_agent for windows。按照正常程序安裝完成后,…

JS和Jquery獲取和修改label的值

獲取值: label標簽在JS和Jquery中使用不能像其他標簽一樣用value獲取它的值: var labeldocument.getElementById("id");var valuelabel.value;var value$("#id").val();可以這樣:JS: var labeldocument.getElementById(&…

Linux內核訪問外設I/O--動態映射(ioremap)和靜態映射(map_desc)

本篇文章主要介紹了"Linux內核訪問外設I/O--動態映射(ioremap)和靜態映射(map_desc)",主要涉及到Linux內核訪問外設I/O--動態映射(ioremap)和靜態映射(map_desc)方面的內容,對于Linux內核訪問外設I/O--動態映射(ioremap)和靜態映射(map_desc)感…

點擊顯示隱藏盒子函數

示例&#xff1a;&#xff08;手機導航欄&#xff09; <header> <div class"logo"></div> <p class"text">微蜂傳媒</p> <div class"nav_btn" οnclick"showHide(.dropdown_menu)"></div> …

MyBatis 緩存機制

Mybatis 有兩級緩存&#xff1a; 一級緩存&#xff1a; 也稱為本地緩存&#xff0c;SqlSession級別的緩存。一級緩存是一直開啟的&#xff1b; 與數據庫同一次會話期間查詢到的數據會放在本地緩存中&#xff0c;以后如果需要獲取相同的數據&#xff0c;直接從緩存中拿&#xff…

Android虛擬化引擎VirtualApp探究

2019獨角獸企業重金招聘Python工程師標準>>> 介紹 首先需要說明的是&#xff0c;VirtualApp并不是前些陣子滴滴開源的插件化框架VirtualApk。 VirtualApp是一個更加黑科技的東西&#xff0c;他可以創建一個虛擬空間&#xff0c;你可以在虛擬空間內任意的安裝、啟動和…

揭開全景相機的創業真相

&#xff08;Bubl全景相機&#xff09; 國外一開源&#xff0c;國內就自主。這在VR&#xff08;虛擬現實&#xff09;領域體現的淋漓盡致——Google的Cardborad一開源&#xff0c;國內就有數百家廠商蜂擁做了各種插手機的VR盒子。到了全景相機&#xff0c;這一幕似乎又開始重演…

一個厲害的網站

2019獨角獸企業重金招聘Python工程師標準>>> dromara 發現一個網站&#xff0c;發現上面的開源項目真的都非常厲害誒。 轉載于:https://my.oschina.net/miaojiangmin/blog/2934221

最全VR產業鏈全景圖(必收藏)

http://www.360doc.com/content/16/0324/20/28622037_544974325.shtml