Archive for ‘ 六月, 2003

Cookie 是什麼?

很多網站在你瀏覽網頁之後,會在你的電腦系統中留下一些小小的檔案,也就是所謂的 Cookie。當你再去瀏覽這些網站時,系統便會去讀取這些 Cookie 再更新一遍。

Cookie 不是「餅乾」,Cookie 是伺服器暫存在你電腦上的一筆資料,好讓伺服器用來辨認你的電腦。就好比是格林童話故事中,沿途撒下麵包屑避免在森林中迷路的小孩。

為什麼需要 Cookie?

HTTP 的協議本身是「無記憶狀態 (Stateless) 」的,無論是用戶端還是網頁伺服器,每一個頁面都沒有關聯,每一次的請求都是單獨的請求。伺服器藉由 Cookie 來讓同一個用戶的各項操作都可以產生關聯。

當你在瀏覽網站的時候,伺服器會先送一小小資料放在你的電腦上,Cookie 會幫你在網站上所打的文字或是一些選擇都紀錄下來。當下次你再光臨同一個網站,網頁伺服器會先查看有沒有上次留下的 Cookie 資料,有的話,就會依據 Cookie 裡的內容來判斷用戶,送出特定的網頁內容給你。

Cookie 的使用很普遍,許多有提供個人化服務的網站,都是利用 Cookie 來識別用戶,以方便送出為用戶量身而做的內容,像是 Web 介面的免費 email 網站,都要用到 Cookie。

Cookie 會不會有危險?其實 Cookie 中記載的資料相有限,Cookie 是安全的。網站不可能經由 Cookie 獲得你的 email 地址或是其他私人資料,更沒有辦法透過 Cookie 來存取底的電腦。

但是如果你實在不喜歡網頁伺服器亂丟餅乾(Cookie)到你家,當然可以讓瀏覽器拒絕網站存放 Cookie 到你的電腦。

IE 瀏覽器從「工具」選單 → Intertnet 選項 → 安全性,按「自訂層級」,到 Cookie 的部分,全都設為關閉,按確定,關閉瀏覽器,再重新啟動瀏覽器即可。

當你關閉 Cookie 之後,很多網站的個人化服務功能很可能也不能再使用了。

IE 的 Cookie 預設存放位置是在:C:\WINDOWS\Temporary Internet Files

你可以直接刪掉這裡面的東西或是利用「Internet 選項」裡的清除檔案按鈕來清除。

Cookie 的內容

大家想不想知道哪個網站有設 Cookie?你的 Cookie 資料又為何?其實,用一行簡單的 JavaScript 指令就可以一清二楚了。

首先,開啟一個網站,例如 http://www.google.com ,一旦網站開啟後,在瀏覽器的位址列中輸入以下的一行 JavaScript 指令:

javascript:alert("Cookie:"+document.cookie)

javascript:document.write(document.cookie)

按下 Enter 後,你會見到跳出一個小警告視窗,上面便會標明出你的 Cookie 資料。試試看吧! 當然,如果你的瀏覽器的 Cookie 功能被關閉,那你當然就見不到囉。

比較新的瀏覽器 Chrome 與 Firefox 都有內建「開發人員工具」,只要按 F12 開啟「開發人員工具」,可以在「Application」或「儲存空間」頁籤看到網站所儲存的 Cookie 內容。

什麼是 Session?

講到 Cookie 就會有人提到 Session。

Session 的資料是存放在 Web 伺服器端。用解釋的不好解釋,我們先來舉個例子...

有一家咖啡店要舉辦咖啡買三送一的活動,若以「Cookie」或「Session」的作法來看:

  • Cookie:
    相當於是店家發給你一張「小卡片」,每次你來買一杯咖啡就在卡片上蓋個印章,集滿三個印章,那咖啡店就會送你一杯免費的咖啡。
    其中,購買咖啡的記錄是留在你攜帶的卡片上,如果卡片遺失你的記錄就不存在了。
  • Session:
    相當於是店家請你加入他們的會員,然後發給你一張「會員卡」(Session ID)。每次你拿會員卡來買咖啡都會在公司的電腦裡留下記錄,買了三杯咖啡就會送你一杯免費的咖啡。
    其中,購買咖啡的記錄是儲存在店家的電腦裡,如果會員卡遺失了可以透過核對會員的資料來重新取得會員卡。未來這張會員卡甚至可能在它的連鎖店使用。

可以說,Cookie 只做一件事,就是存取伺服器暫存在客戶端的資料。而 Session 則是一個涵蓋範圍比較廣、比較完整的保存機制。並且 Session 仍需藉由 Cookie、網址或表單...等三種方式來識別用戶的 Session ID,才能接續之後伺服器要做的事情。

只要「網站是將任何用戶的資料儲存在伺服器,並且用 Cookie、網址或表單來識別單一用戶」,這樣就已經是在實作 Session 了。由於「識別用戶」是很普遍的功能,你所使用的程式框架 (Framework) 有可能在無聲無息之中就已經幫你完成整個機制了,你只要把心思用在程式的其它部份即可。

參考網頁

[Perl]安裝 ImageMagick 相關模組 *

ImageMagick 是個功能強大的圖片工具,讓你讀取、寫入、操作任何熱門的圖片格式,如 GIF、JPEG、PNG、PDF… 等。使用 ImageMagick 可以即時的建立 GIF 的圖片檔案,讓圖形可以更融入網頁等應用介面。你也可以更改圖片的大小、反轉圖形、增強亮度、減少顏色對比、加入額外特殊的效果。圖片可以儲存不同的格式依你的工作需求。
Read more

Redhat Linux 7.3 快速安裝指引 *

教你快速安裝 Redhat Linux 7.3…

特點及功能如下

  • 使用單純的結構,以提供主流服務,系統將不安裝 X-Window 介面。
  • 具備 ProFtp、Sendmail、Webmail、web 及資料庫 (MySQL) 的服務。
  • 可使用瀏覽器在線上做系統管理 (WebMin)、資料庫維護 (phpMyAdmin) 及流量監控 (Mrtg)。
  • 每天與時間伺服器對時。
  • 每週自動更新系統的套件。

Read more

將郵件伺服器換成 Postfix + pop-before-smtp *

故名思意,pop-before-smtp 就是在 smtp 前,先用 pop3 的帳號登入,以確保伺服器上有你的帳號。以下的步驟,先將 Sendmail 換成 Postfix,再將 smtp 的認証則改用 pop-before-smtp 的方式。

安裝 Postfix

  • 先移除 sendmail:
  • apt-get remove sendmail
  • 使用 apt 安裝 postfix:
  • apt-get install postfix
  • 編輯 /etc/postfix/main.cf,搜尋之參數及修改方式如下:
  • myhostname  ->  host.example.com
    mydomain  ->  example.com
    myorigin  ->  $myhostname
    inet_interfaces  ->  all
    mydestination  ->  /etc/postfix/local-host-names
    mynetworks  ->  127.0.0.0/8, hash:/etc/postfix/access
    relay_domains  ->  $mydestination
    alias_maps  ->  hash:/etc/postfix/aliases
  • 設定本機收件時的領域名稱,將領域名稱新增到 /etc/postfix/local-host-names,每個名稱佔一行:
  • example.com
    mail.example.com
    host.example.com
  • 初始化相關資料庫:
  • postmap hash:/etc/postfix/access
    postalias hash:/etc/postfix/aliases
  • 至此已完成 Postfix 的安裝,直接啟動 Postfix 即可:
  • service postfix start

    安裝 pop-before-smtp

    顧名思義,pop-before-smtp 就是在寄信前,必須先用 pop3 檢查郵件,只要 pop3 登入正確,你就可以用同一台伺服器寄信 (30分鐘內)。安裝步驟如下:

  • 安裝 Perl 的 File::Tail、Time::HiRes、Net::Netmask、Date::Parse 模組,建議使用 WebMin 安裝,或執行下列指令:
  • perl -MCPAN -e 'install File::Tail'
    perl -MCPAN -e 'install Time::HiRes'
    perl -MCPAN -e 'install Net::Netmask'
    perl -MCPAN -e 'install Date::Parse'
  • 從本站下載 pop-before-smtp 的安裝檔至 /tmp,並執行安裝:
  • cd /tmp
    wget http://www.vixual.net/download/source/postfix/pop-before-smtp-1.33-1.noarch.rpm
    rpm -ivh pop-before-smtp-1.33-1.noarch.rpm
  • 編輯 /etc/pop-before-smtp-conf.pl,將下列三行前的註解 # 拿掉:
  • #$file_tail{'name'} = '/var/log/maillog';
    #$grace = 30*60;
    #$dbfile = '/etc/postfix/pop-before-smtp';
  • 編輯 /etc/postfix/main.cf,在最後面加上:
  • smtpd_recipient_restrictions = permit_mynetworks,reject_non_fqdn_recipient,check_client_access hash:/etc/postfix/pop-before-smtp,check_relay_domains
  • 啟動 pop-before-smtp,並重新載入 postfix:
  • service pop-before-smtp start
    service postfix reload

    用 postfix 及 vm-pop3d 建立虛擬電子信箱 *

    所謂的「虛擬電子信箱」指的是用戶在伺服器上沒有實體的帳號,但是卻可以透過 POP3 或是 Open Webmail 來使用電子郵件服務。這樣的組態,一方面比較不會有安全性的問題,同時也可以在一部伺服器上支援較多的用戶。

    Read more

    安裝 JSP 環境 - resin *

    resin 可讓 Linux 支援 JSP 的環境,系統必須先安裝 Sun 的 J2SDK 之後,再安裝 resin。而 resin 已是一個可獨立執行的網頁伺服器,相較於另一套 JSP 伺服器 「tomcat「,resin 的穩定度及效能都有比較好,但需注意的是,resin 只有在你用來發展程式的過程時是免費的,其它用途都要付費。

    安裝 Java 環境

    從本站下載 J2SDK 的安裝檔到 [/tmp],並執行安裝:

    cd /tmp
    wget http://www.vixual.net/download/source/jsp/j2sdk-1_4_1_02-fcs-linux-i586.rpm
    rpm -ivh j2sdk-1_4_1_02-fcs-linux-i586.rpm

    安裝 resin

  • 從本站下載 resin 2.1.9 的原始檔到 [/var],並解壓縮:
  • cd /var
    wget http://www.vixual.net/download/source/jsp/resin-2.1.9.tar.gz
    tar -xzvf resin-2.1.9.tar.gz
    mv resin-2.1.9 resin
  • 將 Java 及 resin 的相關路徑加到環境變數,請編輯 /etc/profile,在檔案最下方加入:
  • PATH=$PATH:/usr/java/j2sdk1.4.1_02/bin
    export JAVA_HOME=/usr/java/j2sdk1.4.1_02
    export CLASSPATH=$JAVA_HOME/lib
    export RESIN_HOME=/var/resin
  • 重新載入 /etc/profile:
  • source /etc/profile
  • 啟動 resin:
  • /var/resin/bin/httpd.sh start
  • 安裝成功,連結網址: http://host.domain.tld:8080/
  • 啟動與停止 resin

  • 啟動 resin:
  • /var/resin/bin/httpd.sh start
  • 停止 resin:
  • /var/resin/bin/httpd.sh stop
  • 重新啟動 resin:
  • /var/resin/bin/httpd.sh restart

    變更監聽埠

    resin 預設的監聽埠是 「8080″,如果你想要變更埠號,請編輯 /var/resin/conf/resin.conf,找到 port=』8080′,將它改成你想要的埠號 (應避免與 apache 的 80 埠或其它服務的埠號相衝突),再重新啟動 resin 即可。

    將系統的 ftp 服務換成 ProFTP

    Redhat Linux 7.3 預設的 ftp 服務是採用 wu-ftpd,雖然 wu-ftpd 在效能上,一直有不錯的表現,程式版本更新的速度也不慢,不過,它卻不是一個夠安全的系統。ProFtpd 的發展,一開始便是定位在成為一個安全且容易設定的 ftp 伺服器程式,它的風格及表現,深得許多網管人員的喜愛。如果您想找一個不錯的 ftp 伺服程式來取代 wu-ftpd,試試 ProFtpd 吧…
    Read more

    NTP - 校正 Linux 時間

    NTP 可以讓您與遠端的時間伺服器同步,以校正 Linux 系統的時間。
    Read more

    MRTG 快速安裝法 *

    MRTG 主要是用來偵測主機上的資料流量,將流量繪製成漂亮的統計圖表。另外,我們也可以自行寫一些 SCRIPT,加掛於 MRTG 上,只要你提供給 MRTG 它兩個數值,它就可以做為流量的依據,幫我們產生統計圖表。
    Read more

    用 APT 來更新 Linux 的系統套件

    Apt 就像 Microsoft 的 WindowsUpdate 及 RedHat 的 up2date,它強化 RPM 的功能,可以解決 RPM 有套件相依性的問題。安裝 Apt 除了可以讓你很方便且快速地安裝 RPM 套件之外,你也可以用它來更新系統。而且 Apt 不需註冊,完全免費,更可以安裝非 RedHat 提供的套件 (跟你指定的來源伺服器有關)。

    安裝 Apt 並更新系統

    1. freshrpms 下載最新版的 apt,下載符合下一個步驟中相同名稱的 rpm 套件。
    2. 依序安裝:

      rpm -Uvh apt-x.x.x-x.rh73.i386.rpm
      rpm -Uvh apt-devel-x.x.x-x.rh73.i386.rpm
      

      安裝完成之後,其執行檔為 /usr/bin/apt-get,相關設定檔放在 /etc/apt/。

    3. 編輯來源伺服器設定檔 /etc/apt/source.list,檢查檔案的內容,因為本站安裝的是 RedHat Linux 7.3 的版本,所以應該要有下面的資料:
      # freshrpms.net
      rpm http://ayo.freshrpms.net redhat/7.3/en/i386 os updates freshrpms
      rpm-src http://ayo.freshrpms.net redhat/7.3/en/i386 os updates freshrpms
      
    4. 更新系統:
      apt-get update
      apt-get -y upgrade
      apt-get clean
      
    5. 以後如果要安裝套件,可以輸入:
      apt-get install <套件名稱>
      

    常用參數

    • update: 與來源伺服器(source.list)資料比對,更新套件的資訊。
    • check: 檢查目前主機上套件的相依性。
    • upgrade: 進行主機上所有套件的昇級。
    • dist-upgrade: 進行主機上所有套件的昇級。
    • install <套件名稱>: 下載及安裝套件,若有相依屬性的套件則會詢問你是否一併安裝。
    • remove <套件名稱>: 移除套件,若有相依屬性的套件則會詢問你是否確定要移除。
    • source <套件名稱>: 下載 Source 套件。
    • clean: 清除下載回來的檔案。
    • -f install: 檢查系統套件的相依性,並修正錯誤。
    • -y: 程式執行中,若有任何詢問皆自動回答 “Yes”。

    讓系統每週都能自動更新一次

    • 於 /etc/cron.weekly/ 新增一個指令檔 “upgrade.sh”,內容如下:

      #! /bin/bash
      apt-get update
      apt-get -y dist-upgrade
      apt-get clean
      
    • 更改檔案屬性為 755:
      chmod 755 /etc/cron.weekly/upgrade.sh
      

    參考網址

    return top