介紹好用工具:reCAPTCHA (免費的 CAPTCHA 驗證服務)

我想大家都知道什麼是 CAPTCHA,且實作 CAPTCHA 機制在技術上應該也不是甚麼難事,不過市面上也已經有不少人提出破解 CAPTCHA 圖片驗證的技術了,所以若要自己實作較複雜的 CAPTCHA 驗證機制其實還是有點難度的,我今天我就跟各位介紹一個偷懶的方法,也就是我之前曾經使用過的 reCAPTCHA 線上服務。

reCAPTCHA 是一個免費、且提供線上 CAPTCHA 驗證的服務,reCAPTCHA 提供的驗證機制據稱是十分的安全,他提供的服務中除了 CAPTCHA 基本的【圖片驗證】之外,另外還提供【語音驗證】的服務,而這部分若要自行實作也是有些難度的。

reCAPTCHA 是以類似 Web Service 的方式提供服務的,若要了解 reCAPTCHA 的運作方式,可以參考下列圖片:

API diagram

  1. 使用者載入現有網頁時,也同時載入一個透過 JavaScript 嵌入的 reCAPTCHA 挑戰(challenge)介面。所謂的挑戰介面就是指要進行 CAPTCHA 驗證的區塊。
  2. 使用者從 reCAPTCHA 取得挑戰後,reCAPTCHA 就會顯示一串挑戰的文字讓使用者進行人工識別。
  3. 使用者輸入自行辨識後的文字在挑戰區塊的表單裡,使用者在將輸入的回應資訊(challenge token)連同原本的表單資訊 POST 回到 Server 端。
  4. Server 端的程式收到後,會將資訊送到 reCAPTCHA 驗證是否正確,然後再將結果回應給你 Server 端的程式。
  5. 如果驗證成功,你就可以在 Server 端進行相關作業,例如:建立使用者、將發表的文章寫入資料庫、或其他動作。若驗證失敗,你可以繼續顯示表單並請使用者重新輸入一遍。 

若要在你現有的網站上使用 reCAPTCHA 服務基本上幾乎不用寫什麼複雜的程式,通常只要幾行指令就可以輕易的將 reCAPTCHA 服務套用到現有的網站上。在 reCAPTCHA 網站的 Resources 網頁中所列出的 Programming Environment Plugins 就包含了以下程式語言:

  • PHP
  • ASP.NET ( 網站上的範例雖然是 VB.NET 但下載的壓縮檔中有包含 C# 範例喔 )
  • Classic ASP: see this forum post
  • Python
  • Perl (contributed by Andy Armstrong)
  • Ruby (contributed by McClain Looney)
  • Another Ruby library from Jason L Perry
  • Java (contributed by Soren)
  • JSP Mailhide Tag (contributed by Tamas Magyar)
  • ColdFusion (contributed by Robin Hilliard)

若要套用到一些網路上知名的應用程式,reCAPTCHA 也提供以下應用程式的外掛套件:

除此之外,網站上還有提供 reCAPTCHA API 與 MailHide API 可供任何其他程式語言自行開發外掛,可說是一個十分貼心的服務,推薦大家可以試試看。

相關連結

  

此文章由 will 發表於 2008/9/30 下午 11:59:00

永久連結 | 評論 (3) | 此文章的RSSRSS comment feed |

分類: ASP.NET | JavaScript | PHP | Web | 介紹好用工具

標籤:

收藏:

微軟將在 ASP.NET 相關產品中全面支援 jQuery

今天在 Scott Guthrie 的部落格發現一個好消息,就是微軟即將在未來幾個星期內,在現有的 Visual Studio 2008 SP1 與 ASP.NET 相關產品中全面加入對 jQuery 的支援。不只如此,未來微軟的客戶還能在微軟產品支援服務(PSS)開啟與 jQuery 相關的問題。

文中還說,微軟將不會干涉任何 jQuery 現有的狀態,會將 jQuery 原封不動並且維持原本的 MIT License 置入微軟的產品中,除此之外也會另外提供一個支援 Intellisense 與提供完整註解的版本。

我簡單節錄一些重點如下:

  • VS2008SP1 Intellisense 的版本將在未來幾周提供免費下載
  • 新版本的 ASP.NET MVC 也會將 jQuery 內含其中
  • ASP.NET AJAX 與 ASP.NET AJAX Control Toolkit 也會改用 jQuery 實做
  • ASP.NET MVC 也會開發新的 Ajax server-side helper methods
  • ASP.NET AJAX 新功能 (例如: client template support) 也會設計跟 jQuery 完美整合
  • 微軟也將貢獻對於 jQuery 的測試(tests)、錯誤修正(bug fixes)、修補套件(patches)並回報給 jQuery 團隊

相關連結

  

此文章由 will 發表於 2008/9/29 下午 02:48:55

永久連結 | 評論 (2) | 此文章的RSSRSS comment feed |

分類: ASP.NET | JavaScript | Visual Studio | Web

標籤: ,

收藏:

Windows Server 2008 的啟用方式

因為我前幾天才剛安裝好一台 Windows Server 2008,但我今天連進主機時看到一個 Windows 啟用好像有問題的通知,點開之後看到以下畫面,點下線上深入瞭解後才發現,原來 Windows Vista Enterprise, Windows Vista Business, 與 Windows Server 2008 這三種版本的 Windows 啟用的方法跟我們習慣的啟用方式不太一樣。

Windows 啟用 - Windows 無法啟用 :: 金鑰管理服務(KMS)主機不可以位在網域名稱系統(DNS)中,請您的系統管理員確認已在 DNS 中正確發行 KMS。 

原來進行 Windows 啟用有兩種方式,第一種是透過 KMS 伺服器自動啟用,第二種是透過一個 Windows Script Host 指令碼(slmgr)手動進行啟用。

因為我是用大量授權的 Windows Server 2008 安裝光碟進行安裝的,所以才會預設必須在網域內先安裝 KMS 系統才能進行啟用。若你要用第一種作法啟用,可以下載 Volume Activation 2.0 Technical Guidance 文件回去研究。

而我採用的是第二種作法比較簡單,就是在「命令提示字元」下輸入以下指令:

slmgr -ipk xxxxx-xxxxx-xxxxx-xxxxx-xxxxx
這裡的 xxxxx-xxxxx-xxxxx-xxxxx-xxxxx 指的就是你的 MAK (Multiple Activation Key) 序號,執行完後會出現以下畫面,就代表啟用成功了:

Windows Script Host - 成功安裝產品金鑰 

相關連結

  

此文章由 will 發表於 2008/9/28 上午 12:02:37

永久連結 | 評論 (0) | 此文章的RSSRSS comment feed |

分類: 系統管理

標籤:

收藏:

SQL Server 與 Oracle 的各種版本功能、特性比較表

我在工作上偶爾會需要整理各資料庫與資料庫各版本的比較表給客戶看,讓客戶瞭解而各種資料庫或資料庫各版本間的差異、價格、功能、...等。不過 SQL Server 2008 卻讓我花了好些時間才收集完相關的比較資訊,埋藏在 MSDN 裡面,且還分了好幾篇文章。我覺得納悶的是:為什麼這些比較資訊不整理放在 SQL Server 2008 產品官網中呢?!

我們有個客戶,每次跟他合作專案他都要採用 Oracle,我雖然沒有決定權,但疑問一直在心中。兩年後的今日,又有一個新案子要合作了,趁他還沒買之前我問他為什麼你們不買 SQL Server 呢?以下是對話紀錄:

  • 保哥:為什麼你們都要用 Oracle 資料庫系統?
  • 客戶:因為 SQL Server 比 Oracle 貴阿,而且還整整貴一倍呢!
  • 保哥:會嗎?應該是 SQL Server 比較便宜吧?我沒聽人說過 SQL Server 還會比較貴的?
  • 客戶:我要的功能在 Oracle 的標準版就有了,而在 SQL Server 2005 要企業版才做的到!
  • 保哥:會嗎?你要什麼功能?
  • 客戶:叢集(Cluster)啊!我們要做 HA 架構,Oracle 業務說他們的產品只要「標準版」就有了,但微軟的業務跟我說 SQL Server 要「企業版」版才支援叢集架構。
  • 保哥:SQL Server 2005 標準版就有支援叢集啦!請看 http://www.microsoft.com/taiwan/sql/prodinfo/features/compare-features.mspx
  • 客戶:真的耶!原來 SQL Server 2005 標準版就有支援叢集啦,那 SQL Server 2005 真的比較便宜耶!那我這次改買 SQL Server 2005 好了。

從上面的對話看來,如果網路上不容易查到相關資訊的話(我是指 SQL Server 2008),對客戶來說就只能靠供應商的業務講解,但這就很可能遇到上面這問題。我想可能是微軟的業務搞不清楚版本功能,才導致提供錯誤的資訊。

對我們來說,SQL Server 的開發工具是比較友善的。而對客戶來說,授權費應該也比較省。若遇到客戶並不怎麼 Care 到底要用什麼資料庫系統的時候,我通常都會直接建議採購 SQL Server,應該是雙贏的選擇。

以下是我這陣子收集的相關資料庫版本比較資訊,希望對各位有所幫助:

SQL Server 2005 各版本比較

SQL Server 2008 各版本比較

SQL Server 2008 標準版(Standard) v.s. 企業版(Enterprise) 比較

SQL Server 2008 行動版(Compact) v.s. 簡易版(Express) 比較

SQL Server 2008 Express 各版本比較

SQL Server 與「其他資料庫」的比較

Oracle Database 11g 各版本功能、特性比較

Oracle Database 10g 各版本功能、特性比較

備註:因為我對 Oracle 比較沒那麼熟悉,所以資料是少了一些,若各位有更完整詳細的比較資訊,歡迎各位提供給我,我再補上去。

  

此文章由 will 發表於 2008/9/27 下午 02:02:00

永久連結 | 評論 (10) | 此文章的RSSRSS comment feed |

分類: Oracle | SQL Server

標籤: , , ,

收藏:

將 IIS 中已安裝的 SSL 憑證移至 Apache 2.2 for Win32 安裝

這幾天為了替客戶安裝一個 VeriSign 憑證到 Windows 平台的 Apache 2.2 上面傷透腦筋,問了好多朋友都沒有人有這樣的經驗,網路上是有一大堆文章,不過所有的文章都是講如何「自己簽發 SSL 憑證」,但我得到的任務卻是要把一個已經申請下來已經安裝至 IIS 的憑證安裝到 Apache 2.2 for Win32 中,而我手邊得到的資訊十分有限,只有拿到一個 CA.cer 檔,還有一個已經安裝在 IIS 中且可匯出的 VeriSign 憑證。

首先,我上網找資訊找幾個小時,找的資料也很多,不過大多不符合我的需求,讓我很沒方向感,最後還是跟客戶要到 網際威信(HiTRUST) 的電話,直接打電話到認證客服部詢問安裝的方式,果然專家一出手、便知有沒有,他們很精確的瞭解我的問題並且指導我解決這個問題。

我打算用「最短路徑」說明如何解決這個問題,以下是我本次安裝、設定的完整紀錄:

步驟 0:確認手邊現有的資訊(只要這些就夠了)

  1. 客戶有提供給我一個 CA.cer 檔案。
  2. IIS 中已經安裝了 VeriSign 憑證,且憑證的私鑰(Private Key)是可以匯出的。
  3. 客戶有提供給我當初要申請憑證前所設定的私鑰密碼。

步驟 1:準備相關資料與檔案

  1. 下載 Apache 2.2 安裝檔並安裝完成
  2. 中繼憑證檔 ( Server Certificate Chain File )
    • 在 Apache 2.2 中預設檔名為 server-ca.crt
    • 這個檔案就是客戶提供給我的 CA.cer 檔,建議可以將他改名為 server-ca.crt,並將此檔移至 C:\Program Files\Apache Software Foundation\Apache2.2\conf 目錄下。
    • 這個檔案的內容也會在核發憑證下來後的通知信裡面出現,只要將信件中 -----BEGIN CERTIFICATE----- 到 -----END CERTIFICATE----- 為止的內容複製起來,並儲存成 server-ca.crt 檔即可。
  3. 伺服器憑證檔 ( Server Certificate File )
    • 在 Apache 2.2 中預設檔名為 server.crt
    • 「伺服器憑證檔」必須先透過 IIS 匯出二進位格式的 PKCS12 私鑰檔 (*.pfx) 轉換成 ASCII 格式的才看的到。
  4. 伺服器私鑰檔 ( Server Private Key File )
    • 在 Apache 2.2 中預設檔名為 server.key
    • 「伺服器私鑰檔 」必須先透過 IIS 匯出二進位格式的 PKCS12 私鑰檔 (*.pfx) 轉換成 ASCII 格式的才看的到。

步驟 2:從 IIS 匯出憑證(包括 伺服器憑證伺服器私鑰

  1. 開啟已經設定好 SSL 的網站並開啟內容,再切換到[目錄安全設定]頁籤,點選 [伺服器憑證] 按鈕
    開啟已經設定好 SSL 的網站,並開啟內容,再切換到「目錄安全設定」頁籤,點選 [伺服器憑證] 按鈕
  2. 選取 [匯出目前的憑證到 .pfx 檔案],並按 [下一步]
    image
  3. 輸入要儲存 .pfx 檔案的路徑與檔名
    輸入要儲存 .pfx 檔案的路徑與檔名
  4. 輸入當初申請憑證時所設定的密碼
    輸入當初申請憑證時所設定的密碼
  5. 最後會顯示匯出憑證摘要,確認後按下 [下一步] 後再按 [完成] 按鈕即可完成匯出。
    最後會顯示匯出憑證摘要,確認後按下 [下一步] 後再按 [完成] 按鈕即可完成匯出。

步驟 3:將 IIS 匯出的 PKCS12 憑證檔 ( C:\mycert.pfx ) 轉換成 Apache 所需的格式

  1. 透過 Apache 2.2 所附的 openssl.exe 工具進行檔案格式的轉換
    1. 先開啟「命令提示字元」視窗,並進入 C:\Program Files\Apache Software Foundation\Apache2.2\bin 目錄
    2. 執行以下指令:
      C:\...\Apache2.2\bin> openssl.exe pkcs12 -in c:\mycert.pfx -out c:\mycert.txt -nodes
      Enter Import Password:
      MAC verified OK
      當你輸入 openssl.exe pkcs12 -in c:\mycert.pfx -out c:\mycert.txt -nodes 指令後,會被要求再次輸入憑證密碼,若驗證正確就會建立一個 c:\mycert.txt 檔案。
    3. 這時用記事本開啟 c:\mycert.txt 檔案,裡面同時包含兩個憑證,分別是 伺服器私鑰(RSA PRIVATE KEY) 與 伺服器憑證(CERTIFICATE)。
    4. 請在 C:\Program Files\Apache Software Foundation\Apache2.2\conf 目錄下先建立兩個空檔案,檔名分別是 server.keyserver.crt
    5. 這時將 c:\mycert.txt 檔案中的兩個憑證內容分別複製到這兩個檔案內,檔案的內容應該只包括 -----BEGIN *----- 到 -----END * ----- 的內容,c:\mycert.txt 中其他的資料都不能出現在這兩個檔案中。
      1. server.key 的內容會像如下的內容
        -----BEGIN RSA PRIVATE KEY-----
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
        ................
        ................
        BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
        -----END RSA PRIVATE KEY-----
      2. server.crt 的內容會像如下的內容
        -----BEGIN CERTIFICATE-----
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
        ........
        ........
        BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
        -----END CERTIFICATE-----

步驟 4:修改 Apache 設定檔

  1. 編輯 C:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf 檔案
    1. 取消註解 LoadModule ssl_module modules/mod_ssl.so
    2. 取消註解 Include conf/extra/httpd-ssl.conf
  2. 編輯 C:\Program Files\Apache Software Foundation\Apache2.2\conf\extra\httpd-ssl.conf 檔案
    1. 將此檔中所有 _default_ 都改成 *
    2. 取消註解 SSLCertificateChainFile "C:/Program Files/Apache Software Foundation/Apache2.2/conf/server-ca.crt"

步驟 5:重新啟動 Apache22 服務

net stop Apache22
net start Apache22

雖然手續繁雜,但我已經簡化到不能再簡單了。因為這次的經驗讓我更加瞭解 Apache SSL 的設定方式,以後應該不會再遇到問題了。

  

此文章由 will 發表於 2008/9/26 上午 09:24:47

永久連結 | 評論 (1) | 此文章的RSSRSS comment feed |

分類: IIS | Security | Web

標籤: , ,

收藏: