Home » 2007 » August (Page 3)

在 FreeBSD 上支援 SSL 的 ftpd

以前都是裝 ,結果在 6.2 與 7.0 上 compile 時都會有錯誤訊息,也看不出什麼好解法,試了 好像沒什麼問題就決定用他了,但是又卡在忘記怎麼產生 key... 所以寫一篇紀錄下來 XD (這樣的好處是用 找會找到自己的文章... XD)

/etc/ssl 下產生 key 及 crt:

# openssl genrsa -out server.key (umask 077 好像沒用,那只好在生完後趕快 chmod 400)
# openssl req -new -key server.key -x509 -days 3650 -out server.crt

做完以後裝

# cd /usr/ports/ftp/ftpd-tls
# make install clean

裝完後到 /etc/inetd.conf 裡加上對應的欄位,最重要的是後面的:

ftpd-ssl -4lU -z rsacert=/etc/ssl/server.crt -z rsakey=/etc/ssl/server.key

對於只是要有個安全的連線來說算是夠用了。

最後,先把 SHA1 Fingerprint 抓出來:

# openssl x509 -noout -in server.crt -fingerprint -sha1

輸出會像這樣:

SHA1 Fingerprint=DF:E4:3A:7F:79:1D:5D:B9:A8:7E:D2:DD:BD:7A:88:E0:6C:29:15:62

然後 連上時會有 SHA1 Fingerprint 資訊可以對照:

Rsync 3.0 將會有的改善

rsync 3.0 rocks! 這篇看到 在 3.0 的重大改變:

目前的 2.x 都是先掃完檔案後才開始傳輸,對於只有幾千個檔案當然沒問題,但像是大型站台除了用 外,還是會另外找空間備份,這時候的檔案就不只是幾千萬個,通常在掃描的過程就會先出現 "out of memory" 的訊息...

3.0 將會先掃一小部份、傳一部分,再掃一部分、傳一部分,減少記憶體的使用量,另外也會些微增加讀取的效率。(剛掃過的目錄會有 cache?)

繼續期待 3.0 :p

Form 的安全性問題

這陣子在幹壞事的時候才發現國內一些站台都沒有處理好... XD (我絕對沒有說是哪些站喔,自己裝 用他的 View Form Information 看吧 XD)

直接以程式碼舉例。我在我自己的站上放一個 html,裡面有一個 form 與一段 javascript,會自動 submit 出去:


<form
 action="http://dingding.example.org/delete-my-account.php"
 id="myform" method="post" name="myform">
    <input ... /> (某些需要的欄位)
</form>

<script>
var f = document.getElementById("myform");
f.submit();
</script>

如果網站沒有正確處理,就可以讓別人幫你砍帳號,或是發文章 (Spam 的好方法?),或是其他事情。這是因為瀏覽器連到 dingding.example.org 的時候會帶 cookie 進去。

解法也很簡單,用類似 Double Cookie 的方式解決。以 為例,產生 form 的時候多送一個 hidden input:


<input type="hidden" name="doublecookie"
 value="<?= md5(session_id()) ?>" >

然後在接收 form 的程式碼裡面判斷:


if (!isset($_POST["doublecookie"]) ||
    $_POST["doublecookie"] != md5(session_id())) {
    // not match, break it
}

你可以看到 就是用類似的方法做的。在 securityToken (被我劃掉的地方) 的地方:(點小圖看 1024x1024 的大圖,不過我為了塞到一頁裡面,字縮小了兩次...)

Xapian 的幾個細節

這篇是延續 幫 Pixnet 做 Fulltext Search 這篇所寫的,這項功能 已經放出來了:

最後收尾的階段有一些地雷要注意:

  • 對大的 Database 更新會很慢。一開始我是對單一 Database 更新,結果更新的速度跟不上條目修改的速度 XD
  • 所以,我跟 稍微提過以後,決定用空間換取時間,以 ArticleID 拆開,一萬為一個單位把 Database 切成 n 個 DB 放在 上,更新時是對這些小資料庫更新,最後再跑 xapian-compact 合併。這樣就跟的上速度了:三十萬篇大約需要兩個小時的更新 + 六個小時的合併。
  • 有一天心情不好 (原因就不提了),決定把 xapian-compact 的 -m 拿掉 (multipass,官方建議當你有許多 DB 要合併時,使用這個參數「通常」會比較快),結果莫名其妙把合併的時間省到 40mins... (當場就把「靠腰」罵出來了)

最後,把本來是用 standalone 的版本換成 + 版,理論上就不會出現因為後端搜尋伺服器沒跑起來,而使得前端出現 0 result 的情況了... (汗)

PS:因為當初做的時候有得到 的同意,所以等到我閒一點之後,我會用 BSD license 放出來...

Xuite 的 feed...

裡看 的 feed 又爛了,這次應該是第三次了吧... 這分別是在 上看到的情況:

看了 的 Atom,看到:

<content type="text/html"  mode="escaped">
<![CDATA[&lt;p&gt;&lt; (... 中間實在太多,省略...) ]]>
</content>

Atom 1.0 格式裡沒有 mode="escaped" 的用法,往上翻發現是 Atom 0.3,查了 Atom 0.3 的規格書的確是有 mode="escaped" 的用法,但是既然都 escape 了,不需要再用 CDATA 包裝啊 @_@ (至少我把 Atom 抓下來後把 CDATA 去掉,在 上看就正常了...)

有誰可以轉告 的人嗎?就算不打算實做 Atom 1.0,也把 <head></head> 裡預設的 feed 設到 RSS 2.0 吧?至少 RSS 2.0 的 feed 是正常的...

應該避免在 Comment 允許讓使用者貼圖

的 Blog 上看到這篇:[WP]讓訪客在留言中貼圖的方式,這是應該要避免的情況,分成幾個方向。

  • 有心的人可以利用 img 統計流量。
  • 另外一個理由比較薄弱:利用 img 送出某些 GET request,在某些網站本身設計有問題的情況下而可以刪除文章之類的。雖然這個問題不是 Comment 貼圖,而是其他網站設計上的問題,但一般還是會避免這類情況。

一時間只有想到這兩個問題,其他的想到在寫...

Brad Fitzpatrick 離開 LiveJournal

在他的 上提到他要離開 On Leaving SixApart

他寫過很多軟體 (主要都是在 上),不過我想最有名的還是 (這個不在 上),被廣泛用在許多平台上當作 cache service。像是 曾經在 mailing list 上提到他們有兩百台 ,每一台都是 16GB 4-core AMD64:。(這應該是目前所知道最大的 使用站台)

Archives