Author: Kirin Lin

  • Superman Returns

    中文片名:超人再起
    IMDb: Superman Returns (2006)

    剛剛看完 HBO 的播映,再度聽到熟悉的電影主題曲真令人感動。不過,短時間要把故事說完很不容易,有太多事情要交代與回顧,結果變得很零散又不深入的感覺。

  • WordPress Scanner 1.3 Beta 服務

    BlogSecurity 發表 WordPress Scanner 服務 1.3 Beta 版本,外掛部份則無更新,新增的功能:

    • WordPress Backdoor 檢查(給 2.1.1 那個安全性漏洞用)。
    • 檢查您的備份用目錄是否可由網路上讀取(說好要做)。
    • 增加了一些檔案的檢查(例如:phpinfo.php, .htaccess 等)。

    服務使用方式很簡單,請參閱先前這篇《BlogSecurity 提供 WordPress Scanner 工具》。

    要提醒一下,他有關 .htaccess 的建議並不恰當,依樣畫葫蘆後可能會發生外掛有問題以及視覺化編輯器消失等症狀。

  • 固定網址結構更新

    WordPress 有個「自訂固定網址結構」的功能,當初因它處理中文文章代稱時問題很大,就使用自訂結構如下:

    /%year%_%monthnum%/%day%/%post_id%

    就這麼相安無事用了很久,不過人總是得求新求變咪!想換一下…其實是因為 WordPress.com 統計外掛會把底線(_)給去掉…Orz 於是,就把它改成新的自訂結構:

    /%year%/%monthnum%/%day%/%post_id%

    不過問題出現,那存在搜尋引擎與書籤網站還有其他人的瀏覽器連結怎麼辦?改了就會有 404 – Not Found 出現啊~Orz

    經過好一段嚐試錯誤,終於找到解法。但這方法只適用於 Kirin 的狀況,您的固定網址結構根本站不同的請勿使用歐!只要在 .htaccess 中的 #BEGIN WordPress 那行前面加上下面這段:

    # BEGIN Old Rewrite
    
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([0-9]{4})_([0-9]{1,2})/(.*)$ $1/$2/$3 [R=301,QSA,L]
    
    # END Old Rewrite
    
  • 網誌升級至 WordPress 2.3

    花了將近一小時升級,步驟跟上次升級差不多,但是沒有很認真備份…XD

    Apache 怪怪的,主機特別慢,關也關不掉,所以直接整台重開,大概是上次暈到死自動升級後沒重開的後遺症。

    總之,Kirin 所使用的外掛只有 Live Space Sync 1.0 不相容。因為它後台有個選分類的相關設定,直接使用 SQL 去撈資料庫。您也知道,這次 2.3 改變最大以至於讓一堆外掛死翹翹的就是分類…

    稍微修改一下,看起來是可以用,回報給 priv 看看。改法:

    $categories = (array) get_categories('get=all');
  • Secure Site

    由於部門網站僅供內部使用,而我們面對的客戶又是國際大廠。所以,大家在上面所討論的東西或者資訊,不可避免地會觸及客戶資料。為了安全起見,整個網站使用 HTTPS 是必要的作法,直接把所有 HTTP request 用 Rewrite 轉給 HTTPS。

    除了將 anonymous user 取消所有權限外,另外也啟用 Secure Site 模組,加上使用瀏覽器輸入帳號密碼的 Basic Authentication 方式。

    不過這模組有個小 bug,啟用之後會影響到 cron 的執行。仔細觀察 securesite.module 後發現,它其實有處理 cron bypass。那…為什麼會有問題?因為我在 setting.php 裡面對 $base_url 做了設定,結果就產生錯誤。

    回頭去翻 CVS messages,又發現舊的方法反而比較對:

      // bypass cron.php
      if (!$securesite_enabled || strstr(request_uri(),'cron.php')) {
        return;
      }

    於是手動改掉,並且回報給開發人員,靜待回音。

    更新
    又重新思考一下為什麼開發者會放掉這個方式?很簡單,若是有人使用 http://example.com:88/drupal/whatever?cron.php 類似的 URL 就可以通過該檢查。那,我們從 $base_url 下手如何?

      // bypass cron.php
      $cron_uri = preg_replace('/^(http|https):\/\/[\d\w.:-]*/i','',$base_url.'/cron.php');
      if (!$securesite_enabled || request_uri() == $cron_uri) {
        return;
      }

    改成這樣,就可以取得 $cron_uri 啦!不知道對不對齁?

    更新
    不知道為什麼 mail new password 的功能有問題,造成新密碼無法使用,只好將它停用。