隨筆-22  評論-8  文章-0  trackbacks-0
           
               摘要:   原文(http://www.aygfsteel.com/roymoro/archive/2011/05/09/349833.html)  問題:寫出這個工具的意義在于我運行一個需要長時間執行的程序,如單線程爬蟲。在網絡出現中斷的或網站丟包情況下,程序會拋出socketexception 和sockettimeoutexception。程序會中斷。(再此只是提出一種假設) ...  閱讀全文
          posted @ 2011-05-30 10:34 Hukin 閱讀(465) | 評論 (0)編輯 收藏

          Cookies一詞用在程序設計中是一種能夠讓網站服務器把少量數據儲存到客戶端的硬盤或內存,或是從客戶端的硬盤讀取數據的一種技術。當你瀏覽某網站時,由Web服務器置于你硬盤上的一個非常小的文本文件,它可以記錄你的用戶ID、密碼、瀏覽過的網頁、停留的時間等信息。當你再次來到該網站時,網站通過讀取Cookies,得知你的相關信息,就可以做出相應的動作,如在頁面顯示歡迎你的標語,或者讓你不用輸入ID、密碼就直接登錄等等。從本質上講,它可以看作是你的身份證。但Cookies不能作為代碼執行,也不會傳送病毒,且為你所專有,并只能由提供它的服務器來讀取。保存的信息片斷以"名/值"對(name-value pairs)的形式儲存,一個"名/值"對僅僅是一條命名的數據。
            一個網站只能取得它放在你的電腦中的信息,它無法從其它的Cookies文件中取得信息,也無法得到你的電腦上的其它任何東西。 Cookies中的內容大多數經過了加密處理,因此一般用戶看來只是一些毫無意義的字母數字組合,只有服務器的CGI處理程序才知道它們真正的含義。
            由于Cookies是我們瀏覽的網站傳輸到用戶計算機硬盤中的文本文件或內存中的數據,因此它在硬盤中存放的位置與使用的操作系統和瀏覽器密切相關。在Windows 9X系統計算機中,Cookies文件的存放位置為C:/Windows/Cookies,在Windows NT/2000/XP的計算機中,Cookies文件的存放位置為C:/Documents and Settings/用戶名/Cookies,在Windows Vista/7的計算機中,Cookies文件的存放位置為C:\Users\user\AppData\Roaming\Microsoft\Windows\Cookies\Low。
            硬盤中的Cookies文件可以被Web瀏覽器讀取,它的命令格式為:用戶名@網站地址[數字].txt。如筆者計算機中的一個Cookies文件名為:ch@163[1].txt。要注意的是:硬盤中的Cookies屬于文本文件,不是程序。
            Cookies的設置
            你可以在IE的"工具/Internet選項"的"常規"選項卡中,選擇"設置/查看文件",查看所有保存到你電腦里的Cookies。這些文件通常是以user@domain格式命名的,user是你的本地用戶名,domain是所訪問的網站的域名。如果你使用NetsCape瀏覽器,則存放在"C:/PROGRAMFILES/NETS- CAPE/USERS/"里面,與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窗口中的"工具" "Internet選項",打開"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_MACHINE/Software/Microsoft/Windows/CurrentVersion/Internet Settings/Cache/Special Paths/Cookies,這是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協議中的一部分。
            總之,在某種程度上雖然可以實現Cookies的欺騙,給網絡應用帶來不安全的因素,但Cookies文件本身并不會造成用戶隱私的泄露,也不會給黑客提供木馬程序的載體,只要合理使用,它們會給網站管理員進行網站的維護和管理以及廣大用戶的使用都帶來便利。
            Cookies集合具有以下幾種屬性:
            1.Expires屬性:此屬性用來給Cookies設置一個期限,在期限內只要打開網頁就可以調用被保存的Cookies,如果過了此期限Cookies就自動被刪除。如:
            設定Cookies的有效期到2004年4月1日,到時將自動刪除。如果一個Cookies沒有設定有效期,則其生命周期從打開瀏覽器開始,到關閉瀏覽器結束,每次運行后生命周期將結束,下次運行將重新開始。
            2.Domain屬性:這個屬性定義了Cookies傳送數據的唯一性。若只將某Cookies傳送給_blank">搜狐主頁時,則可使用如下代碼:
            3.Path屬性:定義了Cookies只發給指定的路徑請求,如果Path屬性沒有被設置,則使用應用軟件的缺省路徑。
            4.Srcure屬性:指定Cookies能否被用戶讀取。
            5.Haskeys屬性:如果所請求的Cookies是一個具有多個鍵值的Cookies字典,則返回True,它是一個只讀屬性
            偷竊Cookies和腳本攻擊
            盡管cookies沒有病毒那么危險,但它仍包含了一些敏感信息:用戶名,計算機名,使用的瀏覽器和曾經訪問的網站。用戶不希望這些內容泄漏出去,尤其是當其中還包含有私人信息的時候。
            這并非危言聳聽,一種名為Cross site scripting的工具可以達到此目的。在受到Cross site scripting攻擊時,cookie盜賊和cookie毒藥將竊取內容。一旦cookie落入攻擊者手中,它將會重現其價值。
            cookie盜賊:搜集用戶cookie并發給攻擊者的黑客。攻擊者將利用cookie信息通過合法手段進入用戶帳戶。 cookie毒藥:利用安全機制,攻擊者加入代碼從而改寫cookie內容,以便持續攻擊。
            Cookies的替代品
            鑒于cookie的局限和反對者的聲音,有如下一些替代方法:
            Brownie方案,是一項開放源代碼工程,由SourceForge發起。Brownie曾被用以共享在不同域中的接入,而cookies則被構想成單一域中的接入。這項方案已經停止開發。
            P3P,用以讓用戶獲得更多控制個人隱私權利的協議。在瀏覽網站時,它類似于cookie。
            在與服務器傳輸數據時,通過在地址后面添加唯一查詢串,讓服務器識別是否合法用戶,也可以避免使用cookie。
            使用和禁用Cookies
            用戶可以改變瀏覽器的設置,以使用或者禁用Cookies
            微軟 Internet Explorer
            工具 > Internet選項 > 隱私頁
            調節滑塊或者點擊“高級”,進行設置。
            Mozilla Firefox
            工具 > 選項 > 隱私
            [1][2][3](注:在Linux版本中,可能會是如下操作:編輯 > 屬性 > 隱私 , 而Mac則是:Firefox > 屬性 > 隱私)
            設置Cookies選項
            設定阻止/允許的各個域內Cookie
            查看Cookies管理窗口,檢查現存Cookie信息,選擇刪除或者阻止它們
            蘋果計算機 Safari
            Safari > 預置 > 安全標簽 
            選擇以下的選項
            總是 接受 Cookies
            永不 接受 Cookies
            接受 Cookies 僅從您瀏覽的站點 (例如,不接受來自其它站點的廣告) 預設的選項。
            您可以顯示所有駐留在您瀏覽器中的 cookies,也可隨時將它們之一刪除。
            NETSCAPE
            “PREFERENCE\ADVANCED\COOKIES”,在出現的窗口中有三個選項,選擇“DISABLECOOKIES”即可關閉COOKIE。在IE中,選擇“查看”/“INTERNET選項”/“高級",在隨后出現的窗口中找到“COOKIES”一項,選擇“禁止所有的COOKIE 使用”可關閉COOKIE。
            如果沒有設置cookie列表,請記住在域名前面加入“。”
          posted @ 2011-05-30 10:27 Hukin 閱讀(221) | 評論 (0)編輯 收藏
          僅列出標題
          共3頁: 上一頁 1 2 3 
          主站蜘蛛池模板: 吉首市| 石泉县| 孝感市| 铜梁县| 沈丘县| 汉沽区| 泰宁县| 普宁市| 青海省| 巨野县| 雷波县| 扬州市| 淄博市| 枣阳市| 镇雄县| 东兰县| 桑植县| 海原县| 屯留县| 彭阳县| 连山| 大荔县| 郧西县| 登封市| 友谊县| 浪卡子县| 明星| 滨州市| 本溪市| 互助| 临沭县| 南汇区| 玉树县| 舒城县| 苍梧县| 息烽县| 外汇| 南汇区| 灌云县| 襄城县| 白朗县|