我們幾乎每個網站後台都會用到 FCKeditor 讓客戶編輯 HTML 內容,用過的人都說讚,但我發現初學者在套用 FCKeditor 時卻很容易犯下幾個嚴重的錯誤,讓網站暴露在危險之中。建議所有開發人員一定要重新檢視有使用過 FCKeditor 的專案,看看你有沒有犯了相同的錯誤。
FCKeditor 有內建檔案上傳與管理的功能,而且同時支援 ColdFusion, Python, Perl, ASP, PHP, Lasso, ASP.NET 等多種不同的程式語言,建議用不到的程式碼都可以移除,測試上傳的頁面也可以移除掉。
要在 ASP.NET 中啟用檔案上傳功能,至少需在 fckeditor\fckconfig.js 檔將 _FileBrowserLanguage 與 _QuickUploadLanguage 設定修改成 aspx 才能用,因為這兩個選項的預設值為 php。
除此之外,你還必須編輯修改 fckeditor\editor\filemanager\connectors\aspx\config.ascx 檔案,讓檔案上傳的功能生效。最主要是修改 CheckAuthentication() 方法,此方法用來決定 FCKeditor 是否允許使用者上傳檔案,你總不會希望「所有人」都能上傳檔案 (包括程式碼) 到你的網站吧!
但問題就在這裡了,我知道很多人英文不好,即便作者語重心長的寫了大大的 WARNING 警告你不要輕易的將 return false; 改成 return true;,但是菜鳥工程師以及懶惰的工程師就是會這麼幹,有經驗的工程師可能也會先改成 return true; 等上線前在改回正常的寫法,但老鳥工程師往往因為記性不佳或因為過度自信而導致忽略一些不常見的細節,所以將適當的 Code Review 與 SOP 列入開發流程絕對是有必要的。
如果你的網站後台只有簡單的 Membership 認證,建議可以採用以下的程式碼:
private bool CheckAuthentication(){ return HttpContext.Current.User.Identity.IsAuthenticated;}
如果還牽扯到角色或權限,這個 Method 就必須寫複雜一點,以免被閒雜人等上傳了不該上傳的檔案。
駭客無孔不入,身為開發人員千萬不要有僥倖的心態,對於資訊安全相關的議題馬虎不得也不能大意! ( 註: IT 人員也一樣不能僥倖 )