PHP 使用fckeditor 使用

fckeditor上传漏洞利用总结
FCKeditor &
FCKeditor编辑器页/查看编辑器版本/查看文件上传路径 &
FCKeditor编辑器页 &
FCKeditor/_samples/default.html & 查看编辑器版本
FCKeditor/_whatsnew.html
查看文件上传路径
&fckeditor/editor/filemanager/browser/default/connectors/asp/connector.asp?Command=GetFoldersAndFiles&Type=Image&CurrentFolder=/
XML页面中第二行 “url=/xxx”的部分就是默认基准上传路径
Note:[Hell1]截至日最新版本为FCKeditor v2.6.6
[Hell2]记得修改其中两处asp为FCKeditor实际使用的脚本语言 &
FCKeditor被动限制策略所导致的过滤不严问题 &
影响版本: FCKeditor x.x &= FCKeditor v2.4.3
脆弱描述: &
v2.4.3中File类别默认拒绝上传类型: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|sh|shtml|shtm|phtm
Fckeditor 2.0 &= 2.2允许上传asa、cer、php2、php4、inc、pwml、pht后缀的文件
上传后 它保存的文件直接用的$sFilePath = $sServerDir .
$sFileName,而没有使用$sExtension为后缀
&直接导致在win下在上传文件后面加个.来突破[未测试]
&而在apache下,因为"Apache文件名解析缺陷漏洞"也可以利用之,详见"附录A"
另建议其他上传漏洞中定义TYPE变量时使用File类别来上传文件,根据FCKeditor的代码,其限制最为狭隘。
攻击利用: &允许其他任何后缀上传 &
利用2003路径解析漏洞上传网马 &
影响版本: 附录B &
脆弱描述: &
利用2003系统路径解析漏洞的原理,创建类似“bin.asp”如此一般的目录,再在此目录中上传文件即可被脚本解释器以相应脚本权限执行。
fckeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=connectors/asp/connector.asp
FCKeditor PHP上传任意文件漏洞
影响版本: FCKeditor 2.2 &= FCKeditor 2.4.2
脆弱描述: &
FCKeditor在处理文件上传时存在输入验证错误,远程攻击可以利用此漏洞上传任意文件。
在通过editor/filemanager/upload/php/upload.php上传文件时攻击者可以通过为Type参数定义无效的值导致上传任意脚本。
成功攻击要求config.php配置文件中启用文件上传,而默认是禁用的。
攻击利用: (请修改action字段为指定网址): &FCKeditor 《=2.4.2
for php.html &Note:如想尝试v2.2版漏洞,则修改Type=任意值
即可,但注意,如果换回使用Media则必须大写首字母M,否则LINUX下,FCKeditor会对文件目录进行文件名校验,不会上传成功的。
TYPE自定义变量任意上传文件漏洞 &&
影响版本: 较早版本 &
脆弱描述: &
通过自定义Type变量的参数,可以创建或上传文件到指定的目录中去,且没有上传文件格式的限制。
/FCKeditor/editor/filemanager/browser/default/browser.html?Type=all&Connector=connectors/asp/connector.asp
打开这个地址就可以上传任何类型的文件了,Shell上传到的默认位置是:
&/UserFiles/all/1.asp
&"Type=all"
这个变量是自定义的,在这里创建了all这个目录,而且新的目录没有上传文件格式的限制.
&/FCKeditor/editor/filemanager/browser/default/browser.html?Type=../&Connector=connectors/asp/connector.asp
网马就可以传到网站的根目录下. &Note:如找不到默认上传文件夹可检查此文件:
fckeditor/editor/filemanager/browser/default/connectors/asp/connector.asp?Command=GetFoldersAndFiles&Type=Image&CurrentFolder=/
FCKeditor 新闻组件遍历目录漏洞 &
影响版本:aspx版FCKeditor,其余版本未测试 &
脆弱描述:如何获得webshell请参考上文“TYPE自定义变量任意上传文件漏洞”
攻击利用:修改CurrentFolder参数使用 ../../来进入不同的目录
&/browser/default/connectors/aspx/connector.aspx?Command=CreateFolder&Type=Image&CurrentFolder=../../../&NewFolderName=aspx.asp
根据返回的XML信息可以查看网站所有的目录。 &
/browser/default/connectors/aspx/connector.aspx?Command=GetFoldersAndFiles&Type=Image&CurrentFolder=/
FCKeditor中webshell的其他上传方式 &
影响版本:非优化/精简版本的FCKeditor &
脆弱描述: &
如果存在以下文件,打开后即可上传文件。 &
攻击利用: &
fckeditor/editor/filemanager/upload/test.html
fckeditor/editor/filemanager/browser/default/connectors/test.html
FCKeditor 文件上传“.”变“_”下划线的绕过方法 &
影响版本: FCKeditor =& 2.4.x &
脆弱描述: &
我们上传的文件例如:shell.php.rar或shell..jpg会变为shell_.jpg这是新版FCK的变化。
攻击利用: &提交1.php+空格 就可以绕过去所有的,
&※不过空格只支持win系统 *nix是不支持的[1.php和1.php+空格是2个不同的文件]
Note:upload/778.jpg
这样的格式做了过滤。也就是IIS6解析漏洞。 &
上传第一次。被过滤为123_123.jpg 从而无法运行。 &
但是第2次上传同名文件123.123.jpg后。由于”123_123.jpg”已经存在。
文件名被命名为123.123(1).jpg …… 123.123(2).jpg这样的编号方式。
所以。IIS6的漏洞继续执行了。 & &
如果通过上面的步骤进行测试没有成功,可能有以下几方面的原因: &
1.FCKeditor没有开启文件上传功能,这项功能在安装FCKeditor时默认是关闭的。如果想上传文件,FCKeditor会给出错误提示。
2.网站采用了精简版的FCKeditor,精简版的FCKeditor很多功能丢失,包括文件上传功能。
3.FCKeditor的这个漏洞已经被修复。eWebEditor
&eWebEditor利用基础知识
&默认后台地址:/ewebeditor/admin_login.asp
&建议最好检测下admin_style.asp文件是否可以直接访问
默认数据库路径:
[PATH]/db/ewebeditor.mdb & &
[PATH]/db/db.mdb & &
某些CMS里是这个数据库 &也可尝试 &
[PATH]/db/#ewebeditor.mdb -- 某些管理员自作聪明的小伎俩
使用默认密码:admin/admin888 或 admin/admin 进入后台,也可尝试 admin/123456
(有些管理员以及一些CMS,就是这么设置的) &&
点击“样式管理”--可以选择新增样式,或者修改一个非系统样式,将其中图片控件所允许的上传类型后面加上|asp、|asa、|aaspsp或|cer,只要是服务器允许执行的脚本类型即可,点击“提交”并设置工具栏--将“插入图片”控件添加上。而后--预览此样式,点击插入图片,上传WEBSHELL,在“代码”模式中查看上传文件的路径。
2、当数据库被管理员修改为asp、asa后缀的时候,可以插一句话木马服务端进入数据库,然后一句话木马客户端连接拿下webshell
3、上传后无法执行?目录没权限?帅锅你回去样式管理看你编辑过的那个样式,里面可以自定义上传路径的!!!
4、设置好了上传类型,依然上传不了麽?估计是文件代码被改了,可以尝试设定“远程类型”依照6.0版本拿SHELL的方法来做(详情见下文↓),能够设定自动保存远程文件的类型。
5、不能添加工具栏,但设定好了某样式中的文件类型,怎么办?↓这么办! &
(请修改action字段) &Action.html &
&eWebEditor踩脚印式入侵 &
脆弱描述:
&当我们下载数据库后查询不到密码MD5的明文时,可以去看看webeditor_style(14)这个样式表,看看是否有前辈入侵过
或许已经赋予了某控件上传脚本的能力,构造地址来上传我们自己的shell
攻击利用: &
比如 & ID=46 &
& s-name =standard1 &构造 代码:
& ewebeditor.asp?id=content&style=standard
ID和和样式名改过后 & &
ewebeditor.asp?id=46&style=standard1
eWebEditor遍历目录漏洞 &
脆弱描述: &ewebeditor/admin_uploadfile.asp
&admin/upload.asp &过滤不严,造成遍历目录漏洞
攻击利用: &
第一种:ewebeditor/admin_uploadfile.asp?id=14
&在id=14后面添加&dir=.. &再加
&dir=../..
&&dir=/../.. 看到整个网站文件了
第二种: ewebeditor/admin/upload.asp?id=16&d_viewmode=&dir
eWebEditor 5.2 列目录漏洞 &
脆弱描述: &ewebeditor/asp/browse.asp
&过滤不严,造成遍历目录漏洞 &
攻击利用:
&/ewebeditor/asp/browse.asp?style=standard650&dir=…././/..
利用WebEditor session欺骗漏洞,进入后台 &
脆弱描述: &漏洞文件:Admin_Private.asp
&只判断了session,没有判断cookies和路径的验证问题。
攻击利用: &新建一个test.asp内容如下:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。FckEditor使用介绍 - 我的博客 - ITeye技术网站
1.下载文件FCKeditor_2.6.6.zip fckeditor的所有文件 fckeditor-java-2.6-src.zipfckeditor-java-demo-2.6.zipfckeditor-java-2.6-bin.zip
解压fckeditor-java-demo-2.6.zip。将fckeditor-java-demo-2.6\WEB-INF\lib中的 jar包导入到程序中。
2.删除文件删除fckeditor/editor/_source文件夹如果国际化不是太多,删除/editor/lang/下的除了en.js, zh.js, zh-cn.js三个文件的所有文件
3.应用FckEditor 将删除后的fckeditor文件夹直接复制到WebRoot目录下。(1)在页面中导入fckeditor.js文件&script type="text/javascript" src="fckeditor/fckeditor.js"&&/script&然后应用fckeditor (下面代码要放在具体的显示位置,不能放于&head&&/head&内)&script type="text/javascript"&//括号中的值就等同于一个表单元素的name,后台可根据此name获取相应的值var oFCKeditor = new FCKeditor( 'userName' ) ;//projectname为工程名,而且最后面必须有"/"oFCKeditor.BasePath = "/projectname/fckeditor/" ;oFCKeditor.Create() ;&/script&注意:basepath 必须以“/”开头,比且此"/"代表当前工程目录
(2)是用JSP标签导入标签&%@ taglib uri="" prefix="FCK" %&最后在页面中应用&FCK:editor instanceName="myeditor" value=" "&&/FCK:editor& 必须指定instanceName 和 value 属性,而且 value的值不能为空字符串,最少为个空格
4.配置FCKeditor可以直接在fckeditor.js文件中直接修改,或添加一个额外的JS文件,覆盖fckeditor.js文件中的配置。如果是自己建立文件修改配置,需要在fckeditor.js文件中指定此文件,也就是在 FCKConfig.CustomConfigurationsPath = '' ; 属性中配置,必须是"/projectnam/path"此配置对所有文件有效
或者在应用JS时候添加,只对当前页面有效&script type="text/javascript"&//括号中的值就等同于一个表单元素的name,后台可根据此name获取相应的值var oFCKeditor = new FCKeditor( 'userName' ) ;//projectname为工程名,而且最后面必须有"/"oFCKeditor.BasePath = "/projectname/fckeditor/" ;
oFCKeditor.Config["CustomConfigurationsPath"]="projectnam/path";
oFCKeditor.Create() ;&/script&
5.web.xml文件配置
&!-- FCKeditor servlet --& &servlet& &servlet-name&Connector&/servlet-name& &servlet-class&com.fredck.FCKeditor.connector.ConnectorServlet&/servlet-class& &init-param& &param-name&baseDir&/param-name& &!—此处默认为/UserFiles/,可以修改,前面不需要写”/项目名” --& &param-value&/项目中用于存放上传文件的文件夹/&/param-value& &/init-param& &init-param& &param-name&debug&/param-name& &param-value&true&/param-value& &/init-param& &load-on-startup&1&/load-on-startup& &/servlet&
&servlet& &servlet-name&SimpleUploader&/servlet-name& &servlet-class&com.fredck.FCKeditor.uploader.SimpleUploaderServlet&/servlet-class& &init-param& &param-name&baseDir&/param-name& &param-value&/项目中用于存放上传文件的文件夹/&/param-value& &/init-param& &init-param& &param-name&debug&/param-name& &param-value&true&/param-value& &/init-param& &init-param& &param-name&enabled&/param-name& &!—此处默认为false,表示是否开启上传,需要修改 --& &param-value&true&/param-value& &/init-param& &init-param& &param-name&AllowedExtensionsFile&/param-name& &param-value&&/param-value& &/init-param& &init-param& &param-name&DeniedExtensionsFile&/param-name& &param-value&php|php3|php5|phtml|asp|aspx|ascx|jsp|cfm|cfc|pl|bat|exe|dll|reg|cgi&/param-value& &/init-param& &init-param& &param-name&AllowedExtensionsImage&/param-name& &param-value&jpg|gif|jpeg|png|bmp&/param-value& &/init-param& &init-param& &param-name&DeniedExtensionsImage&/param-name& &param-value&&/param-value& &/init-param& &init-param& &param-name&AllowedExtensionsFlash&/param-name& &param-value&swf|fla&/param-value& &/init-param& &init-param& &param-name&DeniedExtensionsFlash&/param-name& &param-value&&/param-value& &/init-param& &load-on-startup&1&/load-on-startup& &/servlet& &!--以下servlet-mapping 添加/FCKeditor与压缩包中整体复制到项目的文件夹路径相对应--& &servlet-mapping& &servlet-name&Connector&/servlet-name& &url-pattern&/FCKeditor/editor/filemanager/browser/default/connectors/jsp/connector&/url-pattern& &/servlet-mapping&
&servlet-mapping& &servlet-name&SimpleUploader&/servlet-name& &url-pattern&/FCKeditor/editor/filemanager/upload/simpleuploader&/url-pattern& &/servlet-mapping& &!-- FCKeditor servlet --&
6.修改FCKeditor/fckconfig.js中的配置:所有js配置文件最好保存成UTF-8格式,源代码要读取其中数据, 修改 FCKConfig.DefaultLanguage = 'zh-cn' ; 把FCKConfig.LinkBrowserURL等的值替换成以下内容:
FCKConfig.LinkBrowserURL=FCKConfig.BasePath+"filemanager/browser/default/browser.html?Connector=connectors/jsp/connector" ;
FCKConfig.ImageBrowserURL=FCKConfig.BasePath+"filemanager/browser/default/browser.html?Type=Image&Connector=connectors/jsp/connector" ;
FCKConfig.FlashBrowserURL=FCKConfig.BasePath+"filemanager/browser/default/browser.html?Type=Flash&Connector=connectors/jsp/connector" ;
FCKConfig.LinkUploadURL=FCKConfig.BasePath+'filemanager/upload/simpleuploader?Type=File' ;
FCKConfig.FlashUploadURL=FCKConfig.BasePath+'filemanager/upload/simpleuploader?Type=Flash' ;
FCKConfig.ImageUploadURL=FCKConfig.BasePath+'filemanager/upload/simpleuploader?Type=Image' ;
FCKConfig.TabSpaces = 0 ; 改为FCKConfig.TabSpaces = 1 ; 即在编辑器域内可以使用Tab键。 找到: FCKConfig.FontNames = 'AComic Sans MS;Courier NTTimes New RVerdana' ; 加上几种我们常用的字体 FCKConfig.FontNames = '宋体;黑体;隶书;楷体_GB2312;AComic Sans MS;Courier NTTimes New RVerdana' ;
以下是该文件的具体属性列表: FCKConfig.CustomConfigurationsPath = '' ; // 自定义配置文件路径和名称 FCKConfig.EditorAreaCSS = FCKConfig.BasePath + 'css/fck_editorarea.css'; // 编辑区的样式表文件 FCKConfig.EditorAreaStyles = '' ; // 编辑区的样式表风格 FCKConfig.ToolbarComboPreviewCSS =''; //工具栏预览CSS FCKConfig.DocType = '' ;//文档类型 FCKConfig.BaseHref = ''; // 相对链接的基地址 FCKConfig.FullPage = //是否允许编辑整个HTML文件,还是仅允许编辑BODY间的内容 FCKConfig.StartupShowBlocks =//决定是否启用"显示模块" FCKConfig.Debug =//是否开启调试功能 FCKConfig.SkinPath = FCKConfig.BasePath + 'skins/default/' ; //皮肤路径 FCKConfig.PreloadImages=... //预装入的图片 FCKConfig.PluginsPath = FCKConfig.BasePath + 'plugins/' ; //插件路径 FCKConfig.AutoDetectLanguage = //是否自动检测语言 FCKConfig.DefaultLanguage = 'zh-cn' ; //默认语言 FCKConfig.ContentLangDirection = 'ltr' ; //默认的文字方向,可选"ltr/rtl",即从左到右或从右到左 FCKConfig.ProcessHTMLEntities = //处理HTML实体 FCKConfig.IncludeLatinEntities = //包括拉丁文 FCKConfig.IncludeGreekEntities =//包括希腊文 FCKConfig.ProcessNumericEntities =//处理数字实体 FCKConfig.AdditionalNumericEntities = '' ; //附加的数字实体 FCKConfig.FillEmptyBlocks = //是否填充空块 FCKConfig.FormatSource = //在切换到代码视图时是否自动格式化代码 FCKConfig.FormatOutput = //当输出内容时是否自动格式化代码 FCKConfig.FormatIndentator = ' ' ; //当在源码格式下缩进代码使用的字符 FCKConfig.StartupFocus = //开启时焦点是否到编辑器,即打开页面时光标是否停留在fckeditor上 FCKConfig.ForcePasteAsPlainText = //是否强制粘贴为纯文件内容 FCKConfig.AutoDetectPasteFromWord = //是否自动探测从word粘贴文件,仅支持IE FCKConfig.ShowDropDialog =//是否显示下拉菜单 FCKConfig.ForceSimpleAmpersand =//是否不把&符号转换为XML实体 FCKConfig.TabSpaces = 0 ;//按下Tab键时光标跳格数,默认值为零为不跳格 FCKConfig.ShowBorders =//合并边框 FCKConfig.SourcePopup =//弹出 FCKConfig.ToolbarStartExpanded =//启动fckeditor工具栏默认是否展开 FCKConfig.ToolbarCanCollapse =//是否允许折叠或展开工具栏 FCKConfig.IgnoreEmptyParagraphValue =//是否忽略空的段落值 FCKConfig.FloatingPanelsZIndex = 10000 ;//浮动面板索引 FCKConfig.HtmlEncodeOutput =//是否将HTML编码输出 FCKConfig.TemplateReplaceAll =//是否替换所有模板 FCKConfig.ToolbarLocation = 'In' ;//工具栏位置, FCKConfig.CustomConfigurationsPath = '' ; // 自定义配置文件路径和名称 FCKConfig.EditorAreaCSS = FCKConfig.BasePath + 'css/fck_editorarea.css'; // 编辑区的样式表文件 FCKConfig.BaseHref = ''; // 相对链接的基地址 FCKConfig.Debug = true/ // 是否开启调试功能,当调用FCKDebug.Output()时,会在调试窗中输出内容 FCKConfig.SkinPath = FCKConfig.BasePath + 'skins/default/'; // 设置皮肤 FCKConfig.AutoDetectLanguage = true/ // 是否自动检测语言 FCKConfig.DefaultLanguage = 'zh-cn' ; // 设置默认语言 FCKConfig.ContentLangDirection = 'ltr/rtr'; // 默认文字方向,ltr左,rtr右 FCKConfig.FillEmptyBlocks = true/ // 使用这个功能,可以将空的块级元素用空格来替代 FCKConfig.FormatSource = true/ // 切换到代码视图时,是否自动格式化代码 FCKConfig.FormatOutput = true/ // 当输出内容时是否自动格式化代码 FCKConfig.FormatIndentator = ""; // 当在“源码格式”下缩进代码使用的字符 FCKConfig.GeckoUseSPAN = true/ // 是否允许SPAN标记代替B,I,U标记 FCKConfig.StartupFocus = true/ // 开启时是否FOCUS到编辑器 FCKConfig.ForcePasteAsPlainText = true/// 强制粘贴为纯文本 FCKConfig.ForceSimpleAmpersand = true/ // 是否不把&符号转换为XML实体 FCKConfig.TabSpaces = 0/1; // TAB是否有效 FCKConfig.TabSpaces = 4; // TAB键产生的空格字符数 FCKConfig.ShowBorders = true/ // 是否合并边框 FCKConfig.ToolbarStartExpanded = true/ // 页面载入时,工具栏是否展开,点“展开工具栏”时才出现 FCKConfig.ToolBarCanCollapse = true/ // 是否允许展开折叠工具栏 FCKConfig.ToolbarSets = // 编辑器的工具栏,可以自行定义,删减,可参考已存在工具栏 FCKConfig.EnterMode = 'p'; // 编辑器中直接回车,在代码中生成,可选为p | div | br FCKConfig.ShiftEnterMode = 'br'; // 编辑器中Shift+回车,在代码中生成,可选为p | div | br FCKConfig.ContextMenu = 字符串数组; // 右键菜单的内容 FCKConfig.FontColors = ""; // 文字颜色列表 FCKConfig.FontNames = ""; // 字体列表 FCKConfig.FontSizes = ""; // 字号列表 FCKConfig.FontFormats = ""; // 文字格式列表 FCKConfig.StylesXmlPath = ""; // CSS样式列表的XML文件的位置 FCKConfig.TemplatesXmlPath = ""; // 模版的XML文件位置 FCKConfig.SpellChecker = "ieSpell/Spellerpages"; // 拼写检查器 FCKConfig.IeSpellDownloadUrl = ""; // 下载拼写检查器的网址 FCKConfig.SmileyPath = FCKConfig.BasePath + 'images/smiley/msn/'; // 表情文件存放路径 FCKConfig.SmileyImages = ''; // 表情文件名称列表,具体参考默认设置 FCKConfig.SmileyColumns = 8; // 表情窗口显示表情列数 FCKConfig.SmileyWindowWidth = 320; // 表情窗口显示宽度,此窗口会因为表情文件的改变而作调整 FCKConfig.SmileyWindowHeight = 240; // 表情窗口显示高度,此窗口会因为表情文件的改变而作调整 FCKConfig.FullPage = true/ // 是否允许编辑整个HTML文件,还是仅允许编辑BODY间的内容 上传设置var _FileBrowserLanguage = 'php' ; // asp | aspx | cfm | lasso | perl | php | py var _QuickUploadLanguage = 'php' ; // asp | aspx | cfm | lasso | php //第一个是文件浏览器使用的语言,第二个快速上传使用的语言,改成你需要的,JSP项目这里就不要改了 FCKConfig.LinkUploadAllowedExtensions = "" ; // empty for all FCKConfig.LinkUploadDeniedExtensions =".(php|php3|php5|phtml|asp|aspx|ascx|jsp|cfm|cfc|pl|bat|exe|dll|reg|cgi)$" //这是两个允许和拒绝上传的文件类型列表 FCKConfig.ImageBrowser =//是否在插入图片功能里面启用服务器文件浏览功能 FCKConfig.ImageBrowserURL = FCKConfig.BasePath + 'filemanager/browser/default/browser.html?Type=Image&Connector=connectors/' + _FileBrowserLanguage + '/connector.' + _FileBrowserE //Type=Image 表示文件类型是image这会使文件浏览器定位到文件上传路径/image/文件夹下面 FCKConfig.FlashBrowser =//是否在插入flash功能中启用服务器文件浏览功能 FCKConfig.LinkUpload =//是否启用插入链接的快速上传功能 FCKConfig.ImageUpload =//是否启用图片快速上传功能 FCKConfig.FlashUpload =//是否启用flash上传功能
7.增加视频上传的功能及其工具栏按钮媒体插件下载地址:
安装步骤一:  将 madmedia整个文件夹 拷贝至 editor/plugins/下,找到FCKConfig.PluginsPath = FCKConfig.BasePath + 'plugins/' ; 这句,查看插件路径是否正确。 安装步骤二: 修改fckconfig.js,在文件末尾增加如下一行代码,FCKConfig.Plugins.Add( 'madmedia', 'en,zh-cn' ) ; 安装步骤三:修改fckconfig.js,找到toolbar按钮设置的部分,将媒体按钮加入toolbar,例如, 原来是, FCKConfig.ToolbarSets["Default"] = [ ['Image','Flash'] ]
改为, FCKConfig.ToolbarSets["Default"] = [ ['Image','Flash','MadMedia'] ]
FCKConfig.ContextMenu= ['Generic','Link','Anchor','Image','Flash','Select','Textarea','Checkbox','Radio','TextField','HiddenField','ImageButton','Button','BulletedList','NumberedList','Table','Form']
中也可加入 FCKConfig.ContextMenu= ['Generic','Link','Anchor','Image','Flash','MadMedia','Select','Textarea','Checkbox','Radio','TextField','HiddenField','ImageButton','Button','BulletedList','NumberedList','Table','Form']
安装步骤四:修改插件中的/FCKeditor/editor/plugins/madmedia/media.js文件,把其中所有的包含”Flash”的字符串用”Link”替换,因为此插件的上传的media文件的存放路径与以Link方式上传文件的目录相同,并不是Flash文件的上传路径。
安装步骤五:为了解决上传中文文件文件名变为乱码的问题需要修改FCKeditor的源代码,在源码的com.fredck.FCKeditor.uploader.SimleUploaderServlet类文件中搜索语句DiskFileUpload upload = new DiskFileUpload();再其后添加一句upload.setHeaderEncoding("UTF-8");编辑完成后把整个源代码的com包重新打成一个.jar包代替原来的.jar包。
8.解决FCKeditor 与 struts2 上传时出错 原因是struts2的filter拦截了上传文件的动作, //org.apache.struts2.dispatcher.Dispatcher.java public HttpServletRequest wrapRequest(HttpServletRequest request, ServletContext servletContext) throws IOException { // don't wrap more than once if (request instanceof StrutsRequestWrapper) {
} String content_type = request.getContentType(); if (content_type != null && content_type.indexOf("multipart/form-data") != -1) { MultiPartRequest multi = getContainer().getInstance(MultiPartRequest.class); request = new MultiPartRequestWrapper(multi, request, getSaveDir(servletContext)); } else { request = new StrutsRequestWrapper(request); }
} 在这里又找不到MultiPartRequest.class的实现类。于是出错了。 只要不让struts2拦截处理上传事件, url-pattern改为*.action就可以解决 但是因为struts2的tag需要经过过滤器,所以如果你jsp页面上面用到了struts2的tag,那么就要增加一个*.jsp的url-pattern,修改web.xml文件如下:
&filter-name&struts2&/filter-name&
&filter-class&
org.apache.struts2.dispatcher.FilterDispatcher
&/filter-class&
&filter-mapping&
&filter-name&struts2&/filter-name&
&url-pattern&*.action&/url-pattern&
&/filter-mapping&
&filter-mapping&
&filter-name&struts2&/filter-name&
&url-pattern&*.jsp&/url-pattern&
&/filter-mapping& 而上传页面调用时直接用文件名调用(如upload.jsp)。struts2只处理 *.action 的请求。 试了一下。和预想的一样,一切OK。
9.上传时弹出“Security error. You probably don't have enough permissions to upload. Please check your server.”错误对话框的解决方法。 比如存放上传文件的文件夹是根目录下的upload,不同类型的文件会存到它的不同子文件夹下,比如图片放在子文件夹Image,Flash放在子文件夹Flash,其它文件夹放在子文件夹File(正如在第4点中提到的配置文件fckconfig.js中URLFCKConfig.FlashUploadURL=FCKConfig.BasePath+'filemanager/upload/simpleuploader?Type=Flash' ;Type的参数值就是上传到的子文件夹的名称),而这些子文件夹是上传第一个文件时程序自建的,而一般的服务器都不让Internet访问用户有新建文件夹的权限,所以需要把这三个子文件夹事先建好。
10.JS获取、修改FecEditor内容
&script type="text/javascript" language="javascript"&
//获取编辑器中HTML内容
function getEditorHTMLContents(EditorName) {
var fckCont = FCKeditorAPI.GetInstance(EditorName).GetXHTML(true);
alert("fckCont is:"+fckCont);
// 获取编辑器中文字内容
function getEditorTextContents(EditorName) {
var oEditor = FCKeditorAPI.GetInstance(EditorName);
var fckCont = oEditor.EditorDocument.body.innerT
alert("fckCont is:"+fckCont);
// 清空编辑器中内容
function clearEditorContents(EditorName) {
FCKeditorAPI.GetInstance(EditorName).EditorDocument.body.innerHTML=""; }
// 设置编辑器中内容
function SetEditorContents(EditorName,cont) {
FCKeditorAPI.GetInstance(EditorName).EditorDocument.body.innerHTML= }
浏览: 75618 次
来自: 约旦河西岸
最近用到了,刚学,佩服,佩服~
必需要顶一个!
谢谢,我也遇到了这个问题。。。select CURRENT_D ...}

我要回帖

更多关于 fckeditor 使用 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信