﻿# 使用 FCKeditor 應注意的幾個可能出現的安全漏洞的地方

我們幾乎每個網站後台都會用到 [FCKeditor](http://www.fckeditor.net/) 讓客戶編輯 HTML 內容，用過的人都說讚，但我發現初學者在套用 [FCKeditor](http://www.fckeditor.net/) 時卻很容易犯下幾個嚴重的錯誤，讓網站暴露在危險之中。建議所有開發人員一定要重新檢視有使用過 [FCKeditor](http://www.fckeditor.net/) 的專案，看看你有沒有犯了相同的錯誤。

[FCKeditor](http://www.fckeditor.net/) 有內建檔案上傳與管理的功能，而且同時支援 ColdFusion, Python, Perl, ASP, PHP, Lasso, ASP.NET 等多種不同的程式語言，建議用不到的程式碼都可以移除，測試上傳的頁面也可以移除掉。

![FCKeditor 2.6.4](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/d0668d6425d2ca2d9596-image_3.png "FCKeditor 2.6.4")

要在 ASP.NET 中啟用**檔案上傳**功能，至少需在 **fckeditor\\fckconfig.js** 檔將 \_FileBrowserLanguage 與 \_QuickUploadLanguage 設定修改成 aspx 才能用，因為這兩個選項的預設值為 php。

![要在 ASP.NET 中啟用檔案上傳功能，至少需在 fckeditor\\fckconfig.js 檔將 \_FileBrowserLanguage 與 \_QuickUploadLanguage 設定修改成 aspx 才能用，因為這兩個選項的預設值為 php。](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/5569d52037f5efa384e2-image_6.png "要在 ASP.NET 中啟用檔案上傳功能，至少需在 fckeditor\fckconfig.js 檔將 _FileBrowserLanguage 與 _QuickUploadLanguage 設定修改成 aspx 才能用，因為這兩個選項的預設值為 php。")

除此之外，你還必須編輯修改 fckeditor\\editor\\filemanager\\connectors\\aspx\\config.ascx 檔案，讓檔案上傳的功能生效。最主要是修改 CheckAuthentication() 方法，此方法用來決定 [FCKeditor](http://www.fckeditor.net/) 是否允許使用者上傳檔案，你總不會希望「所有人」都能上傳檔案 (包括程式碼) 到你的網站吧！

![private bool CheckAuthentication()](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/1be11882215f12faac37-image_9.png "private bool CheckAuthentication()")

但問題就在這裡了，我知道很多人**英文不好**，即便作者語重心長的寫了大大的 WARNING 警告你不要輕易的將 return false; 改成 return true;，但是**菜鳥工程師**以及**懶惰的工程師**就是會這麼幹，有經驗的工程師可能也會先改成 return true; 等上線前在改回正常的寫法，但**老鳥工程師**往往因為**記性不佳**或因為**過度自信**而導致忽略一些不常見的細節，所以將適當的 Code Review 與 SOP 列入開發流程絕對是有必要的。

如果你的網站後台只有簡單的 Membership 認證，建議可以採用以下的程式碼：

```
private bool CheckAuthentication(){    return HttpContext.Current.User.Identity.IsAuthenticated;}
```

如果還牽扯到角色或權限，這個 Method 就必須寫複雜一點，以免被閒雜人等上傳了不該上傳的檔案。

駭客無孔不入，身為**開發人員**千萬不要有**僥倖的心態**，對於資訊安全相關的議題馬虎不得也不能大意！ ( 註: IT 人員也一樣不能僥倖 )
