.Net中Freetextbox的使用方法与安全补丁。
在.Net项目中编辑器使用Freetextbox的占有一定的比重,说去编辑器的选择不得不说的产品,Freetextbox堪称第一款开源免费.Net编辑器,在使用上比较简单,拥有较全的功能以及多语言支持而得到广大开发人员的青睐。
虽是初学.Net,但是由于以往对ASP的项目开发在编辑器上遗留下了很大的弊端,使得我这次不得不精心挑选,在51aspx上询问各位大侠得知了Freetextbox是个不错的选择,便拿来试了试,在使用时发现的一些注意事项作为备忘写了下来。
Freetextbox官方站点:http://freetextbox.com/
最新版本是 4.0Beta 不过国内大部分开发人员使用的是Freetextbox 1.6.3 中文版,当然我也不例外。
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目录用于存放上传文件。
树形结构大致如下,原项目中的文件保持不变:
项目目录(可以是虚拟目录)
├bin(目录)
│ └ FreeTextBox.dll
├images(目录)
│ └ftb(目录中还有3套风格以及3个文件夹样式图标)
├HelperScripts(目录中含有3个ASPX文件)
├Uploads(目录)
└test.aspx
运行项目,访问Test.Aspx文件,即可看到Freetextbox编辑器了,如果不能看到的话还需要设置一下路径,测试页面我们就不多设置了,直接到项目需要使用编辑器的页面来。
在页面头部添加引用:
在页面的适当位置插入代码:
其中红色显示部分为相对路径,需根据当前页面的位置修改,绿色显示部分为控件ID可自由设置,toolbarlayout是工具栏工具设置,这里设置的是常用工具,需要修改的话可到网上搜索下全部的按钮信息。
另外需在"<%@ page "中设置validateRequest的值为false,不然会提示“请求验证过程检测到有潜在危险的客户端输入值,对请求的处理已经中止。该值可能指示危及应用程序安全的尝试,如跨站点的脚本攻击。”。
安全设置:
改变默认上传路径:用编辑器打开ftb.imagegallery.aspx文件,第17行修改默认的起始文件夹为Uploads;
发现Freetextbox1.6.3的图片浏览文件ftb.imagegallery.aspx没有设置访问权限,最好在Page_Load下设置用户登入验证,在百度中搜索了下inurl:ftb.imagegallery.aspx,一打图片肉鸡出现在眼前,虽然ftb.imagegallery.aspx在客户端与服务端独有上传文件格式验证,只能上传图片,但任何人访问这个地址就能做上传删除等操作,未免太荒谬了点,所以必须做登入验证,方法如下:
编辑ftb.imagegallery.aspx,在
string isframe = "" + Request["frame"];
下面添加你站点的验证,验证不通过直接跳回首页或登入页面,这个验证代码各站点不同,需自己编写,一般都是session验证或cookies验证。
能在图片目录下上传删除还不止,当把路径修改下就是另外一片文件夹了,点开刚百度到得连接“http*****.cn/helps/ftb.imagegallery.aspx?frame=1”在地址后面加上&rif=..&cif=..在访问,整个网站的目录就呈现在眼前了,下面有上传删除等按钮,哪天网站的后台文件夹整个被人删除了还不晓得为什么。修正方式如下:
找到
把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 = DateTime.Now.ToString() + UploadFileName.Remove(0, UploadFileName.LastIndexOf("."));
UploadFileName = UploadFileName.Replace(":", "").Replace("-", "").Replace(" ", "");
//by Yation.Team 2009/7/17 上传文件用时间重命名