『壹』 什麼是Cookie有什麼用
最近比較火的話題, cookie是否安全?3.15晚會後引起了廣大網友對Cookie泄漏隱私的擔憂,下面來詳細解讀下Cookie,以及權威觀點。 Cookies是一種能夠讓網站伺服器把少量數據儲存到客戶端的硬碟或內存,或是從客戶端的硬碟讀取數據的一種技術。Cookies是當你瀏覽某網站時,由Web伺服器置於你硬碟上的一個非常小的文本文件,它可以記錄你的用戶ID、密碼、瀏覽過的網頁、停留的時間等信息。當你再次來到該網站時,網站通過讀取Cookies,得知你的相關信息,就可以做出相應的動作,如在頁面顯示歡迎你的標語,或者讓你不用輸入ID、密碼就直接登錄等等。 從本質上講,它可以看作是你的身份證。但Cookies不能作為代碼執行,也不會傳送病毒,且為你所專有,並只能由提供它的伺服器來讀取。保存的信息片斷以名/值對(name-value pairs)的形式儲存,一個名/值對僅僅是一條命名的數據。一個網站只能取得它放在你的電腦中的信息,它無法從其它的Cookies文件中取得信息,也無法得到你的電腦上的其它任何東西。 Cookies中的內容大多數經過了加密處理,因此一般用戶看來只是一些毫無意義的字母數字組合,只有伺服器的CGI處理程序才知道它們真正的含義。 由於Cookies是我們瀏覽的網站傳輸到用戶計算機硬碟中的文本文件或內存中的數據,因此它在硬碟中存放的位置與使用的操作系統和瀏覽器密切相關。 實際上,Cookie中保存的用戶名、密碼等個人敏感信息通常經過加密,很難將其反向破解。但這並不意味著絕對安全,黑客可通過木馬病毒盜取用戶瀏覽器 Cookie,直接通過偷取的Cookie騙取網站信任。可以看出,木馬病毒入侵用戶電腦是導致用戶個人信息泄露的一大元兇。 自1993年 Cookie誕生以來,其就擁有專屬性原則,即A網站存放在Cookie中的用戶信息,B網站是沒有許可權直接獲取的。但是,現在一些第三方廣告聯盟的代碼 使用范圍很廣。這就造成用戶在A網站搜索了一個關鍵字,用戶繼續訪問B網站,由於B網站也使用了同一家的第三方廣告代碼,這個代碼可以從Cookie中獲 取用戶在A網站的搜索行為,進而展示更精準的推廣廣告。比如搜索糖尿病等關鍵詞,再訪問其聯盟網站,頁面會立刻出現糖尿病治療廣告。如果並未事先告 之,經用戶同意,此做法有對隱私構成侵犯的嫌疑。目前這個還處在灰色地帶。 因此,跨站Cookie恰恰就是用戶隱私泄露的罪魁禍首,所以限 制網站使用跨站Cookie,給用戶提供禁止跟蹤(DNT)功能選項已成為當務之急。據了解,目前IE、Chrome、360、搜狗等瀏覽器均可以快速清 除用戶瀏覽器網頁的Cookie信息。但從目前整體的隱私安全保護環境來看,安全軟體仍然存在著巨大的防護缺口。
『貳』 cookie怎麼用啊
Cookie技術是一個非常有爭議的技術,自經誕生它就成了廣大網路用戶和Web開發人員的一個爭論焦點。有一些網路用戶,甚至包括一些資深的Web專家也對它的產生和推廣感到不滿,這倒不是因為Cookie技術的功能太弱或別的技術性能上的原因,而僅僅是因為他們覺得Cookie的使用,對網路用戶的隱私構成了危害。因為Cookie是由Web伺服器保存在用戶瀏覽器上的小文本文件,它包含有關用戶的信息(如身份識別號碼、密碼、用戶在Web站點上購物的方式或用戶訪問該站點的次數)。
那麼Cookie技術究竟怎樣呢?是否真的給網路用戶帶來了個人隱私的危害呢?還是讓我們看了下面的內容,再做回答吧。
(1)Cookie技術簡介
在WEB技術發展史上,Cookie技術的出現是一個重大的變革。最先是Netscape在它的Netscape Navigator 瀏覽器中引入了Cookie技術,從那時起,World Wide Web 協會就開始支持Cookie標准。以後又經過微軟的大力推廣(因為微軟的IIS Web伺服器所採用的ASP技術很大程度的使用了Cookier技術),即在微軟的Internet Explorer瀏覽器中完全支持Cookie技術。到現在,絕大多數的瀏覽器都支持Cookie技術,或者至少兼容Cookie技術的使用。
1)什麼是Cookie?
按照Netscape官方文檔中的定義,Cookie是在HTTP協議下,伺服器或腳本可以維護客戶工作站上信息的一種方式。Cookie是由Web伺服器保存在用戶瀏覽器上的小廣西文件,它可以包含有關用戶的信息(如身份識別號碼、密碼、用戶在Web站點購物的方式或用戶訪問該站點的次數)。無論何時用戶鏈接到伺服器,Web站點都可以訪問Cookie信息。
通俗地講,瀏覽器用一個或多個限定的文件來支持Cookie。這些文件在使用Windows操作系統的機器上叫做Cookie文件,在Macintosh機器上叫做magic Cookie 文件,這些文件被網站用來在上面存儲Cookie數據。網站可以在這些Cookie文件中插入信息,這樣對有些網路用戶就有些副作用。有些用戶認為這造成了對個人隱私的侵犯,更糟的是,有些人認為Cookie是對個人空間的侵佔,而且會對用戶的計算機帶來安全性的危害。
目前有些Cookie是臨時的,另一些則是持續的。臨時的Cookie只在瀏覽器上保存一段規定的時間,一旦超過規定的時間該Cookie就會被系統清除。例如在PHP中Cookie被用來跟蹤用戶進程直到用戶離開網站。持續的Cookie則保存在用戶的Cookie文件中,下一次用戶返回時,仍然可以對它進行調用。
在Cookie文件中保存Cookie,一些用戶會過分地認為這將帶來很大的問題。主要是有些用戶擔心Cookie會跟蹤用戶網上沖浪的習慣,譬如用戶喜愛到那些類型的站點、愛從事些什麼活動等。害怕這種個人信息一旦落入一些別有用心的傢伙手中,那麼個人也就可能成為一大堆廣告垃圾的對象,甚至遭到意外的損害。不過,這種擔心壓根兒不會發生,因為網站以外的用戶是無法跨過網站來獲得Cookie信息的。所以想以這種目的來應用Cookie是不可能的。不過,由於一些用戶錯誤的理解以及「以訛傳訛」,一些瀏覽器開發商別無選擇,只好作出相識的響應(例如Netscape Navigator4.0和Internet Explorer3.0都提供了屏蔽Cookie的選項)。
對Cookie技術期待了這么久的結果是,迫使許多瀏覽器開發商在它們的瀏覽器中提供了對Cookie的靈活性控制功能。例如,目前的兩大主流瀏覽器Netscape Navigator 和 Internet Explorer是這樣處理Cookie的:Netscape Navigator4.0不但可以接受Cookie進行警告,而且還可以屏蔽掉Cookie;InternetExplorer3.0也可以屏蔽Cookie,但在Internet Explorer4.0中就只能進行接受警告而沒有提供屏蔽選項,不過在Internet Explorer4.0之後的更新版本中又加入了屏蔽Cookie的功能選項。
此外,很多最新的技術甚至已經可以在不能屏蔽Cookie的瀏覽器上進行Cookie的屏蔽了。例如,可以通過將Cookie文件設置成不同的類型來限制Cookie的使用。但是,非常不幸地是,要是你想完全屏蔽Cookie的話,肯定會因此拒絕許多的站點頁面。因為當今已經有許多Web站點開發人員愛上了Cookie技術的強大功能,例如Session對象的使用就離不開Cookie的支持。
盡管今天仍有一些網路用戶對於Cookie的爭論樂此不倦,但是對於絕大多數的網路用戶來說還是傾向於接受Cookie的。因此,我們盡可以放心地使用Cookie技術來開發我們的WEB頁面。
2)Cookie是怎樣工作的?
要了解Cookie,必不可少地要知道它的工作原理。一般來說,Cookie通過HTTP Headers從伺服器端返回到瀏覽器上。首先,伺服器端在響應中利用Set-Cookie header來創建一個Cookie,然後,瀏覽器在它的請求中通過Cookie header包含這個已經創建的Cookie,並且反它返回至伺服器,從而完成瀏覽器的論證。
例如,我們創建了一個名字為login的Cookie來包含訪問者的信息,創建Cookie時,伺服器端的Header如下面所示,這里假設訪問者的注冊名是「Michael Jordan」,同時還對所創建的Cookie的屬性如path、domain、expires等進行了指定。
Set-Cookie:login=Michael Jordan;path=/;domain=msn.com;
expires=Monday,01-Mar-99 00:00:01 GMT
上面這個Header會自動在瀏覽器端計算機的Cookie文件中添加一條記錄。瀏覽器將變數名為「login」的Cookie賦值為「Michael Jordon」。注意,在實際傳遞過程中這個Cookie的值是經過了URLEncode方法的URL編碼操作的。
這個含有Cookie值的HTTP Header被保存到瀏覽器的Cookie文件後,Header就通知瀏覽器將Cookie通過請求以忽略路徑的方式返回到伺服器,完成瀏覽器的認證操作。
此外,我們使用了Cookie的一些屬性來限定該Cookie的使用。例如Domain屬性能夠在瀏覽器端對Cookie發送進行限定,具體到上面的例子,該Cookie只能傳達室到指定的伺服器上,而決不會跑到其他的如www.hp.com的Web站點上去。Expires屬性則指定了該Cookie保存的時間期限,例如上面的Cookie在瀏覽器上只保存到1999年3月1日1秒。當然,如果瀏覽器上Cookie太多,超過了系統所允許的范圍,瀏覽器將自動對它進行刪除。至於屬性Path,用來指定Cookie將被發送到伺服器的哪一個目錄路徑下。
說明:瀏覽器創建了一個Cookie後,對於每一個針對該網站的請求,都會在Header中帶著這個Cookie;不過,對於其他網站的請求Cookie是絕對不會跟著發送的。而且瀏覽器會這樣一直發送,直到Cookie過期為止。
『叄』 cookie的作用,用途
作用:可以利用cookies跟蹤統計用戶訪問該網站的習慣,比如什麼時間訪問,訪問了哪些頁面,在每個網頁的停留時間等。利用這些信息,一方面是可以為用戶提供個性化的服務,另一方面,也可以作為了解所有用戶行為的工具,對於網站經營策略的改進有一定參考價值。
用途:存儲用戶在特定網站上的密碼和 ID。另外,也用於存儲起始頁的首選項。在提供個人化查看的網站上,將利用計算機硬驅上的少量空間來儲存這些首選項。這樣,每次登錄該網站時,瀏覽器將檢查是否有cookie。如果有,瀏覽器將此 cookie 隨網頁的請求一起發送給伺服器。
(3)cookie使用方法擴展閱讀
Cookie,有時也用其復數形式Cookies,指某些網站為了辨別用戶身份、進行session跟蹤而儲存在用戶本地終端上的數據(通常經過加密)。定義於RFC2109和2965都已廢棄,最新取代的規范是RFC6265。
cookie主要應用於伺服器,可以利用Cookies包含信息的任意性來篩選並經常性維護這些信息,以判斷在HTTP傳輸中的狀態。Cookies最典型的應用是判定注冊用戶是否已經登錄網站,用戶可能會得到提示,是否在下一次進入此網站時保留用戶信息以便簡化登錄手續,這些都是Cookies的功用。
另一個重要應用場合是「購物車」之類處理。用戶可能會在一段時間內在同一家網站的不同頁面中選擇不同的商品,這些信息都會寫入Cookies,以便在最後付款時提取信息。
『肆』 怎麼在java中使用cookie
一、java保存寫入Cookie
JSP程序片段如下:
//保存寫入Cookie
<%
String cookieName="Sender";
Cookie cookie=new Cookie(cookieName, "Test_Content");
cookie.setMaxAge(10); //存活期為10秒
response.addCookie(cookie);
%>
解讀一下這段代碼:
Cookie cookie=new Cookie(cookieName, "Test_Content");
這一行建立了一個Cookie對象,初始化有兩個參數,第一個參數cookieName定義了Cookie的名字,後一個參數,也是一個字元串,定義了Cookie的內容。也就是用戶希望網頁在用戶的機器上標識的文件內容。
接下來一行:cookie.setMaxAge(10),調用了Cookie中的setMaxAge方法,設定Cookie在用戶機器硬碟上的存活期為10秒。一個Cookie在用戶的硬碟裡面存在的時間並不是無限期的,在建立Cookie對象的時候,我們必須制定Cookie的存活期,超過了這個存活期後,Cookie文件就不再起作用,會被用戶的瀏覽器自行刪除。如果用戶希望用戶在下次訪問這個頁面的時候,Cookie文件仍然有效而且可以被網頁讀出來的話,用戶可以將Cookie的存活期設得稍微長一些。比如cookie.setMaxAge(365*24*60*60)可以讓Cookie文件在一年內有效。
二、 讀取出Cookie
Cookie文件創建好後,自然還需要用戶把它讀出來,代碼片段如下:
<%
Cookie cookies[]=request.getCookies(); //讀出用戶硬碟上的Cookie,並將所有的Cookie放到一個cookie對象數組裡面
Cookie sCookie=null;
String svalue=null;
String sname=null;
for(int i=0;i<cookies.length-1;i++{ //用一個循環語句遍歷剛才建立的Cookie對象數組
sCookie=cookies; //取出數組中的一個Cookie對象
sname=sCookie.getName(); //取得這個Cookie的名字
svalue=sCookie.getValue(); //取得這個Cookie的內容
%>
<%
}
%>
name value
<%=name%> <%=svalue%>
這一小段JSP文件可以讀出用戶硬碟上的所有有效的Cookie,也就是仍然在存活期內的Cookie文件。並用表格的形式列出每個Cookie的名字和內容。
解讀一下這段代碼:
Cookie cookies[]=request.getCookies() 我們用request.getCookies()讀出用戶硬碟上的Cookie,並將所有的Cookie放到一個cookie對象數組裡面。
接下來我們用一個循環語句遍歷剛才建立的Cookie對象數組,我們用sCookie=cookies取出數組中的一個Cookie對象,然後我們用sCookie.getValue()和sCookie.getName()兩個方法來取得這個Cookie的名字和內容。
通過將取出來的Cookie的名字和內容放在字元串變數中,我們就能對其進行各種操作了。在上面的例子里,可通過循環語句的遍歷,將所有Cookie放在一張表格中進行顯示。
『伍』 怎樣正確設置電腦COOKIE功能
關於正確設置Cookies的方法
建議
一 在IE的"工具/Internet選項"的"常規"選項卡中,選擇"設置/查看文件",查看所有保存到你電腦里的Cookies。這些文件通常是以 user@domain格式命名的(user是你的本地用戶名,domain是所訪問的網站的域名。)如果你使用NetsCape瀏覽器,應該就存放在"C: /PROGRAMFILES/NETS- CAPE/USERS/"裡面,與IE不同的是,NETSCAPE是使用一個Cookie文件記錄所有網站的Cookies。
二 打開"工具/Internet選項"中的"隱私"選項卡,調整Cookie的安全級別。
通常情況,可以調整到"中高"或者"高"的位置。
多數的論壇站點需要使用Cookie信息,如果你從來不去這些地方,可以將安全級調到"阻止所有Cookies";
如果只是為了禁止個別網站的Cookie,可以單擊"編輯 "按鈕,將要屏蔽的網站添加到列表中。
在"高級"按鈕選項中,你可以對第一方Cookie和第三方的Cookie進行設置,第一方Cookie是你正在瀏覽的網站的Cookie,第三方Cookie是非正在瀏覽的網站發給你的Cookie,通常要對第三方Cookie選擇"拒絕"。
你如果需要保存 Cookie,可以使用IE的"導入導出"功能,打開"文件/導入導出",按提示操作即可。
祝您愉快!
『陸』 C#中如何使用Cookie
1、添加Cookie
protected void Button1_Click(objectsender, EventArgs e)
{
HttpCookiecookies = new HttpCookie("website");
//方法一
cookies.Values.Add("name","Jianjie1");
cookies.Values.Add("sex","1");
//方法二
cookies["name"]= "Jianjie2";
cookies["sex"]= "0";
cookies.Expires = DateTime.Now.AddMinutes(60);
Response.Cookies.Add(cookies);
}
2、修改Cookie
新建一個頁面CookieModify.aspx,進行測試
下面寫法錯誤:
protected void Button1_Click(objectsender, EventArgs e)
{
HttpCookiecookies = Request.Cookies["website"];
if(cookies != null)
{
cookies.Values["name"] = this.TextBox1.Text;
cookies.Values.Add("newid", "0001");
}
}
再加上一句Response.AppendCookie(cookies);如下
protected void Button1_Click(objectsender, EventArgs e)
{
HttpCookiecookies = Request.Cookies["website"];
if(cookies != null)
{
cookies.Values["name"] = this.TextBox1.Text;
cookies.Values.Add("newid", "0001");
Response.AppendCookie(cookies);
}
}
再新建一個取值頁面CookieGet.aspx,用它展示Cookie值,結果竟然報錯
Cookies的值為NULL。
反復測試,發現在當前頁面上跳轉,Cookie取值正常,再打開一個新窗體頁面中取值Cookie為NULL,
檢查很久,最後嘗試在修改頁面CookieModify.aspx中增加過期時間:cookies.Expires =DateTime.Now.AddMinutes(60); 修改成功!
代碼如下
protected void Button1_Click(objectsender, EventArgs e)
{
HttpCookiecookies = Request.Cookies["website"];
if(cookies != null)
{
cookies.Values["name"] = this.TextBox1.Text;
cookies.Values.Add("newid", "0001");
cookies.Expires = DateTime.Now.AddMinutes(60);
Response.AppendCookie(cookies);
}
}
自己理解:修改Cookie後Response.AppendCookie(cookies); Cookie的默認過期時間是當前會話有效,所以在當前頁面中跳轉可以正常取值,重新打開一個新的窗體Cookie過期了為空。所以最好還是給Expires賦予過期時間。
3、刪除Cookie
刪除Cookie中的一個Value鍵值
protected void btnDeleteItem_Click(objectsender, EventArgs e)
{
HttpCookiecookie = Request.Cookies["website"];
if(cookie != null)
{
cookie.Values.Remove("name");
cookie.Expires = DateTime.Now.AddMinutes(60);
Response.AppendCookie(cookie);
}
}
刪除一個Cookie
protected void btnDeleteCookie_Click(objectsender, EventArgs e)
{
HttpCookiecookie = Request.Cookies["website"];
if(cookie != null)
{
cookie.Expires = DateTime.Now.AddDays(-1);
Response.AppendCookie(cookie);
}
}
以上代碼均經過測試,刪除成功!
源自長沙軟體公司--小房子
『柒』 怎樣確認IE瀏覽器啟用了 cookie cookie是干什麼用的,怎樣設置
COOKIE的作用:
伺服器可以利用Cookies包含信息的任意性來篩選並經常性維護這些信息,以判斷在HTTP傳輸中的狀態。
啟用COOKIE的具體步驟如下:
1、首先打開電腦上的IE瀏覽器,進入到IE瀏覽器頁面中,點擊打開左上角齒輪中的「Internet 選項」。
『捌』 怎樣用cookies
Cookies現在經常被大家提到,那麼到底什麼是Cookies,它有什麼作用呢?
Cookies是一種能夠讓網站伺服器把少量數據儲存到客戶端的硬碟或內存,或是從客戶端的硬碟讀取數據的一種技術。Cookies是當你瀏覽某網站時,由Web伺服器置於你硬碟上的一個非常小的文本文件,它可以記錄你的用戶ID、密碼、瀏覽過的網頁、停留的時間等信息。當你再次來到該網站時,網站通過讀取Cookies,得知你的相關信息,就可以做出相應的動作,如在頁面顯示歡迎你的標語,或者讓你不用輸入ID、密碼就直接登錄等等。
從本質上講,它可以看作是你的身份證。但Cookies不能作為代碼執行,也不會傳送病毒,且為你所專有,並只能由提供它的伺服器來讀取。保存的信息片斷以「名/值」對(name-value pairs)的形式儲存,一個「名/值」對僅僅是一條命名的數據。一個網站只能取得它放在你的電腦中的信息,它無法從其它的Cookies文件中取得信息,也無法得到你的電腦上的其它任何東西。
Cookies中的內容大多數經過了加密處理,因此一般用戶看來只是一些毫無意義的字母數字組合,只有伺服器的CGI處理程序才知道它們真正的含義。
由於Cookies是我們瀏覽的網站傳輸到用戶計算機硬碟中的文本文件或內存中的數據,因此它在硬碟中存放的位置與使用的操作系統和瀏覽器密切相關。在Windows 9X系統計算機中,Cookies文件的存放位置為C:WindowsCookies,在Windows NT/2000/XP的計算機中,Cookies文件的存放位置為C:Documents and Settings用戶名Cookies。
硬碟中的Cookies文件可以被Web瀏覽器讀取,它的命令格式為:用戶名@網站地址[數字].txt。如筆者計算機中的一個Cookies文件名為:ch@163[1].txt。要注意的是:硬碟中的Cookies屬於文本文件,不是程序。
Cookies的設置
你可以在IE的「工具/Internet選項」的「常規」選項卡中,選擇「設置/查看文件」,查看所有保存到你電腦里的Cookies。這些文件通常是以user@domain格式命名的,user是你的本地用戶名,domain是所訪問的網站的域名。如果你使用NetsCape瀏覽器,則存放在「C:PROGRAMFILESNETS- CAPEUSERS」裡面,與IE不同的是,NETSCAPE是使用一個Cookie文件記錄所有網站的Cookies。
我們可對Cookie進行適當設置:打開「工具/Internet選項」中的「隱私」選項卡(注意該設置只在IE6.0中存在,其他版本IE可以單擊「工具/Internet選項」「安全」標簽中的「自定義級別」按鈕,進行簡單調整),調整Cookie的安全級別。通常情況,可以調整到「中高」或者「高」的位置。多數的論壇站點需要使用Cookie信息,如果你從來不去這些地方,可以將安全級調到「阻止所有Cookies」;如果只是為了禁止個別網站的Cookie,可以單擊「編輯」按鈕,將要屏蔽的網站添加到列表中。在「高級」按鈕選項中,你可以對第一方Cookie和第三方的Cookie進行設置,第一方Cookie是你正在瀏覽的網站的Cookie,第三方Cookie是非正在瀏覽的網站發給你的Cookie,通常要對第三方Cookie選擇「拒絕」。你如果需要保存Cookie,可以使用IE的「導入導出」功能,打開「文件/導入導出」,按提示操作即可。
Cookies的寫入與讀取
Cookies集合是附屬於Response對象及Request對象的數據集合,使用時需要在前面加上Response或Request。
用於給客戶機發送Cookies的語法通常為:
當給不存在的Cookies集合設置時,就會在客戶機創建,如果該Cookies己存在,則會被代替。由於Cookies是作為HTTP傳輸的頭信息的一部分發給客戶機的,所以向客戶機發送Cookies的代碼一般放在發送給瀏覽器的HTML文件的標記之前。
如果用戶要讀取Cookies,則必須使用Request對象的Cookies集合,其使用方法是:
需要注意的是,只有在伺服器未被下載任何數據給瀏覽器前,瀏覽器才能與Server進行Cookies集合的數據交換,一旦瀏覽器開始接收Server所下載的數據,Cookies的數據交換則停止,為了避免錯誤,要在程序和前面加上response.Buffer=True。
Cookies的應用
幾乎所有的網站設計者在進行網站設計時都使用了Cookie,因為他們都想給瀏覽網站的用戶提供一個更友好的、人文化的瀏覽環境,同時也能更加准確地收集訪問者的信息。
網站瀏覽人數管理
由於代理伺服器、緩存等的使用,唯一能幫助網站精確統計來訪人數的方法就是為每個訪問者建立一個唯一的ID。使用Cookie,網站可以完成以下工作:測定多少人訪問過;測定訪問者中有多少是新用戶(即第一次來訪),多少是老用戶;測定一個用戶多久訪問一次網站。
通常情況下,網站設計者是藉助後台資料庫來實現以上目的的。當用戶第一次訪問該網站時,網站在資料庫中建立一個新的ID,並把ID通過Cookie傳送給用戶。用戶再次來訪時,網站把該用戶ID對應的計數器加1,得到用戶的來訪次數或判斷用戶是新用戶還是老用戶。
按照用戶的喜好定製網頁外觀
有的網站設計者,為用戶提供了改變網頁內容、布局和顏色的權力,允許用戶輸入自己的信息,然後通過這些信息對網站的一些參數進行修改,以定製網頁的外觀。
在電子商務站點中實現諸如「購物籃」等功能
可以使用Cookie記錄用戶的ID,這樣當你往「購物籃」中放了新東西時,網站就能記錄下來,並在網站的資料庫里對應著你的ID記錄當你「買單」時,網站通過ID檢索資料庫中你的所有選擇就能知道你的「購物籃」里有些什麼。
在一般的事例中,網站的資料庫能夠保存的有你所選擇的內容、你瀏覽過的網頁、你在表單里填寫的信息等;而包含有你的唯一ID的Cookie則保存在你的電腦里。
Cookies的缺陷
Cookie雖然被廣泛的應用,並能做到一些使用其它技術不可能實現的功能。但也存在一些不夠完美的方面,給應用帶來不便。
多人共用一台電腦的問題
任何公共場合的電腦或者許多在辦公室或家裡使用的電腦,都會同時被兩個以上的人使用。這樣,當你用它在網上超市購物時,網上超市或網站會在這台機器上留下一個Cookie,將來也許就會有某個人試圖使用你的賬戶購物,帶來了不安全的可能。當然,在一些使用多用戶操作系統如Windows NT或UNIX的電腦上,這並不會成為一個問題。因為在多用戶操作系統下不同的賬戶的Cookie分別放在不同的地方。
Cookies被刪除時
假如你的瀏覽器不能正常工作,你可能會刪除電腦上所有的臨時Internet文件。然而,一旦這樣操作以後,你就會丟掉所有的Cookies文件。當你再次訪問一個網站時,網站會認為你是一位新用戶並分配給你一個新的用戶ID以及一個新的Cookie。結果將會造成網站統計的新老用戶比發生偏差,而你也難以恢復過去保存的參數選擇。
一人使用多台電腦時
有的人一天之中經常使用一台以上的電腦。例如在辦公室里有一台電腦、家裡有一台、還有移動辦公用的筆記本電腦。除非網站使用了特別的技術來解決這一問題,否則,你將會有三個不同的Cookies文件在這三台機器上,而在三台機器上訪問過的任何網站都將會把你看成三個不同的用戶。
防範Cookies泄密
想知道你訪問的網站是否在你的硬碟或內存中寫入了Cookies信息嗎?只需執行下面的操作步驟,就可以了解和控制你正在訪問的網站的Cookies信息。
步驟一 點擊IE窗口中的「工具」 「In-ernet選項」,打開「Internet選項」設置窗口;
步驟二 點擊「Internet選項」設置窗口中的「安全」標簽,然後再點擊「自定義級別」按鈕,進入「安全設置」窗口;
步驟三 找到「安全設置」窗口中的「Cookies」設置項。「Cookies」設置項下有兩個分選項,其中「允許使用存儲在您計算機上的Cookies」是針對存儲在用戶計算機硬碟中的Cookies文件;「允許使用每個對話Cookies(未存儲)」是針對存儲在用戶計算機內存中的Cookies信息。存儲在硬碟中的Cookies文件是永久存在的,而存儲在內存中的Cookies信息是臨時的。要想IE在即將接收來自Web站點的所有Cookies時進行提示,可分別選擇上面兩個分選項中的「提示」項。當然,你也可以選擇「啟用」,允許IE接受所有的Cookies信息(這也是IE的默認選項);選擇「禁止」,則是不允許Web站點將Cookies存儲到您的計算機上,而且Web站點也不能讀取你計算機中已有的Cookies。
IE6.0提供了更為可靠的個人隱私及安全保護措施,可以讓用戶來控制瀏覽器向外發送信息的多少。在「Internet 選項」窗口中新增了「隱私」選項卡(圖1),用戶可以在其中直接設置瀏覽時的隱私級別,按需要控制其他站點對自己電腦所使用的Cookies。如果我們正在瀏覽的站點使用了Cookie,那麼在瀏覽器狀態欄中會有一個黃色驚嘆號的標記,雙擊後可打開「隱私報告」對話框,用戶可以在其中查看具體的隱私策略,還可直接點擊「設置」按鈕後在上述「隱私」選項卡中調節安全隱私級別。
在「常規」選項卡中還增加了「刪除Cookies」按鈕(圖2),方便用戶直接清除本機上的Cookies。另外,在「工具」 「選項」 「高級」選項卡中也增加了一些進一步提高安全性的選項(如關閉瀏覽器時清空Internet臨時文件)。其實,如何更好地保護個人隱私和安全是微軟下一代「.NET」戰略軟體中的關鍵技術,現在IE6.0已經嘗試著邁出了第一步。
另外,由於Cookies的信息並不都是以文件形式存放在計算機里,還有部分信息保存在內存里。比如你在瀏覽網站的時候,Web伺服器會自動在內存中生成Cookie,當你關閉IE瀏覽器的時候又自動把Cookie刪除,那樣上面介紹的兩種方法就起不了作用,我們需要藉助注冊表編輯器來修改系統設置。要注意的是,修改注冊表前請作備份,以便出現問題後能順利恢復。
運行Regedit,找到如下鍵值:HKEY_LOCAL_ SettingsCacheSpecial PathsCookies,這是Cookies在內存中的鍵值,把這個鍵值刪除。至此Cookies無論以什麼形式存在,我們都不用再害怕了。
最後有必要說明的一點是:杜絕Cookies雖然可以增強你電腦的信息安全程度,但這樣做同樣會有一些弊端。比如在一些需要Cookies支持的網頁上,會發生一些莫名其妙的錯誤,典型的例子就是你以後不能使用某些網站的免費信箱了。
Cookies欺騙
通過分析Cookie的格式,我們知道,最後兩項中分別是它的URL路徑和域名,伺服器對Cookie的識別靠的就是這兩個參數。正常情況下,我們要瀏覽一個網站時輸入的URL便是它的域名,需要經過域名管理系統DNS將其轉化為IP地址後進行連接。若能在DNS上進行一些設置,把目標域名的IP地址對應到其它站點上,我們便可以非法訪問目標站點的Cookie了。
要進行Cookies欺騙,其實很簡單。比如在Win9X下的安裝目錄下,有一名為hosts.sam的文件,以文本方式打開後會看到這樣的格式:
127.0.0.1 localhost
經過設置,便可以實現域名解析的本地化,只需將IP和域名依上面的格式添加到文件中並另存為hosts即可。hosts文件實際上可以看成一個本機的DNS系統,它可以負責把域名解釋成IP地址,它的優先權比DNS伺服器要高,它的具體實現是TCP/IP協議中的一部分。
比如我們要讀取的目標站點 www.abc.com 所生成的Cookies信息,可以藉助www.def.com(自己的站點)。在www.def.com 存放用來進行欺騙所需的文件,通過它讀取和修改對方的Cookie。
步驟一 ping出www.def.com 的IP地址:
ping www.def.com
Reply from 192.168.0.1: bytes=32 time=20ms TTL=244
然後修改hosts.sam文件如下:
192.168.0.1 www.abc.com
並保存為hosts文件。
步驟二 讀取Cookies信息:
將用來讀取Cookie的頁面傳至www.def.com ,此時連上www.abc.com,由於我們進行本機DNS域名解析的修改,這時網路連接的並不是www.abc.com,而是www.def.com 。
這樣www.abc.com設在本地的Cookie便可被讀出。
步驟三 同樣道理,你可對讀出的數據進行修改,並可將修改後的信息寫入Cookie中。修改完畢後,刪掉hosts文件,再重新進入www.abc.com,此時所使用的Cookies數據就是你制定的數據。
總之,在某種程度上雖然可以實現Cookies的欺騙,給網路應用帶來不安全的因素,但Cookies文件本身並不會造成用戶隱私的泄露,也不會給黑客提供木馬程序的載體,只要合理使用,它們會給網站管理員進行網站的維護和管理以及廣大用戶的使用都帶來便利。
Cookies集合具有以下幾種屬性
1.Expires屬性:此屬性用來給Cookies設置一個期限,在期限內只要打開網頁就可以調用被保存的Cookies,如果過了此期限Cookies就自動被刪除。如:
設定Cookies的有效期到2004年4月1日,到時將自動刪除。如果一個Cookies沒有設定有效期,則其生命周期從打開瀏覽器開始,到關閉瀏覽器結束,每次運行後生命周期將結束,下次運行將重新開始。
2.Domain屬性:這個屬性定義了Cookies傳送數據的唯一性。若只將某Cookies傳送給搜狐主頁時,則可使用如下代碼:
3.Path屬性:定義了Cookies只發給指定的路徑請求,如果Path屬性沒有被設置,則使用應用軟體的預設路徑。
4.Srcure屬性:指定Cookies能否被用戶讀取。
5.Haskeys屬性:如果所請求的Cookies是一個具有多個鍵值的Cookies字典,則返回True,它是一個只讀屬性。
參考資料:http://tech.pcicp.com/tools/nettools/browser/2004/12/21/1103612532d8780.html
『玖』 在jsp中怎麼使用Cookie
一般來說有兩種辦法,在JSP中使用Java的嵌入腳本.
例如:
寫入Cookie
<html>
<head>........(中間略)
</head>
<body>
<%
String cookieName="Sender";
Cookie cookie=new Cookie(cookieName, "Test_Content");
cookie.setMaxAge(10);
response.addCookie(cookie);
%>
........(其他內容)
</body>
</html>
這樣我們就設置了一個Cookie.
仔細研究一下這段代碼:
Cookie cookie=new Cookie(cookieName, "Test_Content");
這一行建立了一個Cookie對象,初始化有兩個參數,第一個參數cookieName定義了Cookie的名字,後一個參數,也是一個字元串,定義了Cookie的內容。也就是我們希望網頁在用戶的機器上標識的文件內容。
接下來一行:cookie.setMaxAge(10),調用了Cookie中的setMaxAge方法,設定Cookie在用戶機器硬碟上的存活期為10秒。一個Cookie在用戶的硬碟裡面存在的時間並不是無限期的,在建立Cookie對象的時候,我們必須制定Cookie的存活期,超過了這個存活期後,Cookie文件就不再起作用,會被用戶的瀏覽器自行刪除。如果我們希望用戶在下次訪問這個頁面的時候,Cookie文件仍然有效而且可以被網頁讀出來的話,我們可以將Cookie的存活期設得稍微長一些。比如cookie.setMaxAge(365*24*60*60)可以讓Cookie文件在一年內有效。
讀出Cookie
Cookie文件創建好後,自然還需要我們把它讀出來,否則我們不是白費力氣嗎?接下來我們看看如何讀出在用戶硬碟上的Cookie。
<html>
<head>........(中間略)
</head>
<body>
<table border=1>
<tr><td>Name</td><td>value</td></tr>
<%
Cookie cookies[]=request.getCookies();
Cookie sCookie=null;
String svalue=null;
String sname=null;
for(int i=0;i<cookies.length;i++)
{
sCookie=cookies[i];
svalue=sCookie.getValue();
sname=sCookie.getName();
%>
<tr><td><%=name%></td><td><%=svalue%></td></tr>
<%
}
%>
</table>
........(其他內容)
</body>
</html>
這一小段JSP文件可以讀出用戶硬碟上的所有有效的Cookie,也就是仍然在存活期內的Cookie文件。並用表格的形式列出每個Cookie的名字和內容。
我們來逐行分析一下這段代碼:
Cookie cookies[]=request.getCookies() 我們用request.getCookies()讀出用戶硬碟上的Cookie,並將所有的Cookie放到一個cookie對象數組裡面。
接下來我們用一個循環語句遍歷剛才建立的Cookie對象數組,我們用sCookie=cookies[i]取出數組中的一個Cookie對象,然後我們用sCookie.getValue()和sCookie.getName()兩個方法來取得這個Cookie的名字和內容。
通過將取出來的Cookie的名字和內容放在字元串變數中,我們就能對其進行各種操作了。在上面的例子里,可通過循環語句的遍歷,將所有Cookie放在一張表格中進行顯示。
通過上面兩個簡單的例子,可以看到,用JSP進行Cookie的操作,是非常簡單的。不過我們在實際操作中還要注意一些問題:
1. Cookie的兼容性問題
Cookie的格式有2個不同的版本,第一個版本,我們稱為Cookie Version 0,是最初由Netscape公司制定的,也被幾乎所有的瀏覽器支持。而較新的版本,Cookie Version 1,則是根據RFC 2109文檔制定的。為了確保兼容性,JAVA規定,前面所提到的涉及Cookie的操作都是針對舊版本的Cookie進行的。而新版本的Cookie目前還不被Javax.servlet.http.Cookie包所支持。
2. Cookie的內容
同樣的Cookie的內容的字元限制針對不同的Cookie版本也有不同。在Cookie Version 0中,某些特殊的字元,例如:空格,方括弧,圓括弧,等於號(=),逗號,雙引號,斜杠,問號,@符號,冒號,分號都不能作為Cookie的內容。這也就是為什麼我們在例子中設定Cookie的內容為「Test_Content」的原因。
雖然在Cookie Version 1規定中放寬了限制,可以使用這些字元,但是考慮到新版本的Cookie規范目前仍然沒有為所有的瀏覽器所支持,因而為保險起見,我們應該在Cookie的內容中盡量避免使用這些字元。
另一種方法是用Javascript腳本來操作Cookie
兩種方法操作Cookie的具體方法可以這樣查到:
在中搜索關鍵字:JSP Cookie或是Javascript Cookie即可看到你想要的信息.