.Net中Freetextbox的使用方法與安全補丁。
在.Net項目中編輯器使用Freetextbox的占有一定的比重,說去編輯器的選擇不得不說的產(chǎn)品,F(xiàn)reetextbox堪稱第一款開源免費.Net編輯器,在使用上比較簡單,擁有較全的功能以及多語言支持而得到廣大開發(fā)人員的青睞。
雖是初學(xué).Net,但是由于以往對ASP的項目開發(fā)在編輯器上遺留下了很大的弊端,使得我這次不得不精心挑選,在51aspx上詢問各位大俠得知了Freetextbox是個不錯的選擇,便拿來試了試,在使用時發(fā)現(xiàn)的一些注意事項作為備忘寫了下來。
Freetextbox官方站點:
http://freetextbox.com/ 最新版本是 4.0Beta 不過國內(nèi)大部分開發(fā)人員使用的是Freetextbox 1.6.3 中文版,當(dāng)然我也不例外。
Freetextbox 1.6.3中文版下載地址:
http://www.51aspx.com/CV/M67HNQANDQU37/ (含源碼)
1.6.3文件如下:
使用方法: 1、把bin文件夾下的FreeTextBox.dll拷貝到項目Bin文件夾中;
2、把images文件夾下的ftb文件夾拷貝到項目Images文件夾中;
3、把HelperScripts文件夾拷貝到項目根目錄下;
4、text.aspx用作測試,也可以一同拷貝到項目根目錄下;
5、在項目目錄下新建一個Uploads目錄用于存放上傳文件。
樹形結(jié)構(gòu)大致如下,原項目中的文件保持不變:
項目目錄(可以是虛擬目錄)
├bin(目錄)
│ └ FreeTextBox.dll
├images(目錄)
│ └ftb(目錄中還有3套風(fēng)格以及3個文件夾樣式圖標(biāo))
├HelperScripts(目錄中含有3個ASPX文件)
├Uploads(目錄)
└test.aspx
運行項目,訪問Test.Aspx文件,即可看到Freetextbox編輯器了,如果不能看到的話還需要設(shè)置一下路徑,測試頁面我們就不多設(shè)置了,直接到項目需要使用編輯器的頁面來。
在頁面頭部添加引用:
程序代碼
<%@ Register TagPrefix="ftb" Namespace="FreeTextBoxControls" ssembly="FreeTextBox" %>
在頁面的適當(dāng)位置插入代碼:
程序代碼
<ftb:freetextbox id="FreeTextBox1" runat="server" allowhtmlmode="True" buttondownimage="True" buttonpath="../images/ftb/office2003/" helperfilespath="../HelperScripts" startmode="DesignMode" toolbarbackgroundimage="True" toolbarlayout="FontFacesMenu,FontSizesMenu,FontForeColorsMenu|Bold,Italic,Underline,Strikethrough,Superscript,Subscript,RemoveFormat;Print|JustifyLeft,JustifyRight,JustifyCenter,JustifyFull;BulletedList,NumberedList,Indent,Outdent|CreateLink,Unlink,InsertImageFromGallery,InsertTable,InsertRule;Cut,Copy,Paste,Delete,Undo,Redo,WordClean" width="550"></ftb:freetextbox>
其中紅色顯示部分為相對路徑,需根據(jù)當(dāng)前頁面的位置修改,綠色顯示部分為控件ID可自由設(shè)置,toolbarlayout是工具欄工具設(shè)置,這里設(shè)置的是常用工具,需要修改的話可到網(wǎng)上搜索下全部的按鈕信息。
另外需在"<%@ page "中設(shè)置validateRequest的值為false,不然會提示“請求驗證過程檢測到有潛在危險的客戶端輸入值,對請求的處理已經(jīng)中止。該值可能指示危及應(yīng)用程序安全的嘗試,如跨站點的腳本攻擊。”。
安全設(shè)置: 改變默認上傳路徑:用編輯器打開ftb.imagegallery.aspx文件,第17行修改默認的起始文件夾為Uploads;
發(fā)現(xiàn)Freetextbox1.6.3的圖片瀏覽文件ftb.imagegallery.aspx沒有設(shè)置訪問權(quán)限,最好在Page_Load下設(shè)置用戶登入驗證,在百度中搜索了下inurl:ftb.imagegallery.aspx,一打圖片肉雞出現(xiàn)在眼前,雖然ftb.imagegallery.aspx在客戶端與服務(wù)端獨有上傳文件格式驗證,只能上傳圖片,但任何人訪問這個地址就能做上傳刪除等操作,未免太荒謬了點,所以必須做登入驗證,方法如下:
編輯ftb.imagegallery.aspx,在
程序代碼
private void Page_Load(object sender, System.EventArgs e) {
string isframe = "" + Request["frame"];
下面添加你站點的驗證,驗證不通過直接跳回首頁或登入頁面,這個驗證代碼各站點不同,需自己編寫,一般都是session驗證或cookies驗證。
能在圖片目錄下上傳刪除還不止,當(dāng)把路徑修改下就是另外一片文件夾了,點開剛百度到得連接“http*****.cn/helps/ftb.imagegallery.aspx?frame=1”在地址后面加上&rif=..&cif=..在訪問,整個網(wǎng)站的目錄就呈現(xiàn)在眼前了,下面有上傳刪除等按鈕,哪天網(wǎng)站的后臺文件夾整個被人刪除了還不曉得為什么。修正方式如下:
找到
程序代碼
if (cif != "" && rif != "") {
把RootImagesFolder.Value = rif;替換成
程序代碼
//*****************************
RootImagesFolder.Value = DefaultImageFolder;
Array srtArray = cif.Split('\\');
string str = srtArray.GetValue(0).ToString();
if (str != DefaultImageFolder)
{
cif = DefaultImageFolder;
}
cif = cif.Replace("..\\", "").Replace("../","");
//防止越級查看文件 by
Yation.Team - 2009/07/17
Freetextbox上傳圖片是直接保留原文件名的,這個地方做個修改,上傳文件使用時間串做文件名。修改方式如下:
找到
程序代碼
UploadFileName = UploadFileName.Substring(UploadFileName.LastIndexOf("\\")+1);
在其下面添加以下代碼
程序代碼
//*********************
UploadFileName = DateTime.Now.ToString() + UploadFileName.Remove(0, UploadFileName.LastIndexOf("."));
UploadFileName = UploadFileName.Replace(":", "").Replace("-", "").Replace(" ", "");
//by
Yation.Team 2009/7/17 上傳文件用時間重命名
下面可以去試試圖片上傳功能了。我初學(xué).Net,以上修改方法拙劣,望指正,謝謝大家。