Archive for the ‘Site maintenance’ Category

消滅 nofollow

Friday, March 30th, 2007

剛看到一篇網誌,說 WordPress 使用 rel=”nofollow” 毫無益處。rel=”nofollow” 是指搜尋器(例如 Google)在遇到加上 nofollow 的鏈結時不會經鏈結進入另一個網站來計算 PageRank,WordPress 加上這個的主要目的是為了防止 spammer 借用網誌來增加自己的站的 PageRank,但我很同意上面文章的說法,spammer 要的不是 PageRank,而是有人 click 就行。我留意了這些 spam 很久,很多 spam 中的網站鏈結都很迅速地換 hostname,根本等不及 Google 來搜尋,又何來 PageRank?況且 spammer 要 PageRank 來何用?賺錢而已,不必節外生枝。

所以剛剛裝了 Dofollow plugin,即是說各位的回應現在是可以增加 PageRank 的了。

PHP 安全性雜談

Monday, January 8th, 2007

PHP logo

今天整天都在更新和 PHP 有關的東西:

  • 因為看到 Wordpress 2.0.4 有些嚴重安全漏洞 [1] [2],而且都是可以行使 admin 權力執行任意的 php code,所以更新至最新的 2.0.6。
  • 安裝 Suhosin。從它的功能列表來看,有些似乎頗有用,例如可選擇禁止 include() 遠端的 URL。舉例說,phpbb_root_path 造成了多少死傷,該有很多人知道吧。LinuxHall 不知中招中過多少次了,我已經不想去數。
  • 重新編譯 PHP,本來以為這下可慘了,但竟然沒有發生甚麼問題 — Suhosin 的 PHP patch 部份出奇地少,和那十幾個 Ubuntu PHP package 的 patch 居然沒有發生任何衝突;這趙真是神仙打救。只是 Ubuntu 沒有 Suhosin 的套件,得從 Debian 那裏拿一個已經 outdate 的套件自行更新;而且給 PHP5 的 module 更是無法編譯,偏偏我現在仍是用 PHP4,不是神仙打救是甚麼?

之前留意到三則和 PHP 有關的資料:

我記得有人問過我,既然許多 PHP 的程式都不安全(phpNuke 等等),那麼為甚麼不內置一些方法令 PHP 安全一些?說是一句話而已,做的話有許多時候是近乎不可能的。例如寫程式的人沒有安全意識,直接在網頁的 form 的文字欄位讀取內容,檢查也不檢查一下就直接放入資料庫,SQL injection 就是這樣來的。或許有人說,PHP 也有 magic_quotes_gpc 之類的保護啊!但這些設定到最後得不償失,有些程式開了設定後就無法使用,相反地另一些卻是關閉設定後無法使用,十分混亂。而且讀取一個變數,又有沒有可能預知它會怎樣用?可能不是放入資料庫而是直接印出來呢?當成是檔案名稱呢?人名呢?

但也有些問題是可以在 PHP 的層次解決的。例如 suphp,就是執行 PHP 時順便改變 UID,就不會甚麼目錄都要開放給 Apache 的 UID 來讀寫了。不過因為它和 mod_php 不兼容(只能用 Apache + mod_suphp,再經一個 SUID 的 binary 執行 PHP 的 CGI 版本),覺得麻煩,所以就改為試用 Suhosin(雖然到最後發覺用 Suhosin 一樣麻煩 X-D)。

選用 PHP 寫的 web application 真的要當心。phpNuke 和 phpBB 早就入了我的黑名單的永久會籍,phpMyAdmin 也要很小心。淨是這裏列出的 SecurityFocus 有關 PHP 的 advisory 也已經夠瞧了。

  • blog.php-security.org:是 Stefan Esser 自己的 blog,和 PHP 安全性有關的資料很多,學到的東西不少。不過不要理他的 comment,他的說話有不少都帶侮辱成分。
  • PHP security consortium:雖然不覺得它本身有多少建樹,但統計資料倒是可以。相關的還有 Web application security consortium
  • 一個簡單的 tutorial,教人如何在寫 PHP 時避免最常見的三數種安全漏洞:SQL injection, Cross Site Scripting (XSS), Cross Site Request Forgery Attacks (CSRF), Input validation。

我有點興趣想知道,所有開了 PHP safe mode 的網站怎麼辦,是否永遠不升級至 PHP 6?雖然承認了 safe mode 是失敗之作,但這麼快就要它消失,只恐怕有大批管理員要叫苦連天。

Subversion 的 web 介面

Thursday, January 4th, 2007

之前為自己的象棋盤程式架了一個 subversion repository,選擇 web 介面時因為以為 viewcvs 已經停止不再維護,所以試用了一下 websvn。用了一段時間,發覺基本功能好像稍為欠奉,又有點不習慣(始終是慣了用 viewcvs),所以昨晚下定決定找個好一點的,竟然發覺原來 viewcvs 沒有消失,而是換了名稱 — ViewVC。立即就下載回來試用,結果安裝方面完全不困難(我沒有開啟甚麼額外功能),樣子和版面配置也和 viewcvs 沒分別,於是立即架了起來用。

不過之前沒有檢查清楚 websvn 的設定,以為它不能用來下載 tarball,剛才準備刪除 websvn 之前再覆核一下設定,才發覺它也可以下載 tarball,和一樣有 syntax highlight。兩者比較起來,websvn 多了 RSS feed 和 bugtraq keyword 支援,而缺少了瀏覽舊版 source code 的功能;細心比較過之後,還是 viewvc 較適合我。

網站在哪裏?暫時還是 —— 秘~密。不過過一段時間後就會公開出來,因為遲些有時間的話打算將自己正在寫的東西都搬到公眾的 version control 站台(sourceforge 之類),到時我自己架的站就完全沒用了。 :-D

搜狐太過份了

Sunday, December 24th, 2006

我一直以來雖然發覺自己伺服器的 Apache 某些時候總是佔大量 CPU time,但都沒留意是誰搞的鬼,今天將伺服器更新至 Edgy 時才查根究底。原因?標題就已經寫了,原來是 sohu 的傑作。它的 crawler 會毫不留情地搶盡頻寬,後果怎樣,大致上可以想像得到吧。

可是它不仁,我不會不義,出動 iptables 封殺這麼過份。(老實說,是不知為何 iptables 的 connlimit module 不能用)我只是在 Apache 設定裏將 sohu 的頻寬限制為 1kbit/s (128 byte/s),另外只允許它開一個 connection 而已。隨便它慢慢搜吧,無任歡迎 :-D

07:53 附註:它的 IP 是 220.181.19.159

隱形 blog spam

Thursday, July 6th, 2006

這趟見鬼了,兩個月來被 blog spam 轟炸,一直都毫髮無傷,連清理也不需要;但第一次通過雷達網的 spam 就讓我百思不得其解:在 Apache log 裏面竟然沒有紀錄!如果說是老天爺開的玩笑,那就沒甚麼好說了,但如果不是甚麼神或魔的惡作劇,那就更麻煩了,因為能夠這樣做的,一個可能性是 SQL injection,另一個可能性是我的電腦已經被入侵了而我還不知道。

Upgraded wordpress

Monday, May 29th, 2006

It took me too much time. Finally, the Wordpress in my site is upgraded to 2.0.x. The most annoying thing of all is that MySQL is using latin1 character set, thus dumping database produces junk result where Chinese character is supposed to be. This problem is more complex with the fact that I am trying to change blog host name, and plugins are customized a little bit. But anyway, everything looks fine so far, except I’m determined to diverge from the default crappy behaviour (using latin1 charset).

Some few fixes on my site

Sunday, May 28th, 2006

Finally decided to fix some old problems on my site:

So happy that I don’t need to do anything regarding trackback and comment spam, despite the fact that I received tens of them everyday. These plugins are my savior: