http://www.yation.com/article/webpro/freetextbox.htm

来源:百度文库 编辑:神马文学网 时间:2024/04/25 06:47:46

.Net中Freetextbox的使用与ftb.imagegallery.aspx安全修正

字体大小: 小 中 大   .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编辑器了,如果不能看到的话还需要设置一下路径,测试页面我们就不多设置了,直接到项目需要使用编辑器的页面来。
  在页面头部添加引用:
  程序代码<%@ Register TagPrefix="ftb" Namespace="FreeTextBoxControls" ssembly="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,在
   程序代码private void Page_Load(object sender, System.EventArgs e) {
  string isframe = "" + Request["frame"];
  下面添加你站点的验证,验证不通过直接跳回首页或登入页面,这个验证代码各站点不同,需自己编写,一般都是session验证或cookies验证。
  能在图片目录下上传删除还不止,当把路径修改下就是另外一片文件夹了,点开刚百度到得连接“http*****.cn/helps/ftb.imagegallery.aspx?frame=1”在地址后面加上&rif=..&cif=..在访问,整个网站的目录就呈现在眼前了,下面有上传删除等按钮,哪天网站的后台文件夹整个被人删除了还不晓得为什么。修正方式如下:
  找到 程序代码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  上传文件用时间重命名  下面可以去试试图片上传功能了。我初学.Net,以上修改方法拙劣,望指正,谢谢大家。