Wednesday, March 11, 2009

可怕的 subversion

(http://antbsd.twbbs.org/~ant/wordpress/?p=104, April 11th, 2006)

今天測試一下 subversion 的功能,看同事很「神奇」的可以自動登入 subversion repo.,每次commit時也都不需要再次輸入帳號與密碼。經他解說是因為系統裡面的帳號與 subversion repo.中的一樣,所以可以。

發現疑點了。如果真是如此,那麼我隨便在其它電腦中建一個一模一樣的帳號就可以為所欲為了。當然,subversion沒有這麼笨。經過我再次試驗 後,原來和我所想像的一樣,subversion會在此台主機中紀錄你登入後的帳號及密碼,這樣以後再次登入時就不用再輸入帳號及密碼了。

一般具有安全意識的人,跟我一樣會找到上面的疑點。但是更重要的安全問題來了,subversion把帳號、密碼存在那裡?我的直覺這麼告訴我。原本我很放心的以為 subversion 至少會把密碼 hash 過,結果不是,天啊!是明碼耶!

如 subversion 官方文件所說的,這個存明碼的文件是「別人」無法讀取的,所以有足夠的安全性。但是,對於 root 而言,這是沒有差的,因為他有權限可以看到密碼。所以對我而言,我還是感覺非常驚訝 subversion 會這麼做。找了一下其它的文件,發現有可以控制是否要保存密碼。

$HOME/.subversion/config

[auth]
#store-passwords = no
#store-auth-creds = no

store-passwords 預設是 yes,表示會儲存密碼,而且是明碼。所以改成 no,則只會儲存 username,而不會儲存密碼,這樣雖然每次動作都會問密碼,但總是安全許多。

另外,store-auth-creds 預設也是 yes,表示會儲存 cred,而這個檔就是會包括帳號與密碼的檔案,如果改成 no 的話,除了密碼不會儲存外,連帳號都不留痕跡。這是最安全的作法。

為什麼 subversion 不用 hash?還是他其實是可以用的,只是我沒找到而已,或許是後者吧。

No comments:

Post a Comment