虽然可以去除eWeiEditor对于文件类型的限制,但是[color=Red]极不安全!!
今天在给老师做精品课程网站的时候,用到了徐氏的新闻发布系统,里面集成的正好是eWebEditor编辑器,由于要上传几个MHT的课件,可惜eWebEditor又限制了MHT上传[cry]
自己动手,丰衣足食!
于是开始想办法去除这个限制,在Edit目录下面翻了半天,也没找到关于一个扩展名的东西,我的ASP水平也有限,仅仅是能看懂几个语句而已,从来没有学过……
不过,在Upload.asp中,发现了一些东西:
var sAllowExt = "<%=sAllowExt%>";
// 检测上传表单
function CheckUploadForm() {
if (!IsExt(document.myform.uploadfile.value,sAllowExt)){
parent.UploadError("提示:\n\n请选择一个有效的文件,\n支持的格式有("+sAllowExt+")!");
return false;
}
return true
}
这里面正好有关于文件类型受限的提示,我分析了一下。
CheckUploadForm()函数应该是用来检查上传文件的类型。
if (!IsExt(document.myform.uploadfile.value,sAllowExt)){
parent.UploadError("提示:\n\n请选择一个有效的文件,\n支持的格式有("+sAllowExt+")!");
return false;
}
return true
大概的意思是,如果扩展名符合要求就返回true值,否则就弹出提示,然后返回False值。
下面还有这样的
' 检测扩展名的有效性
Sub CheckValidExt(sExt)
Dim b, i, aExt
b = False
aExt = Split(sAllowExt, "|")
For i = 0 To UBound(aExt)
If LCase(aExt(i)) = sExt Then
b = True
Exit For
End If
Next
If b = False Then
OutScript("parent.UploadError('提示:\n\n请选择一个有效的文件,\n支持的格式有("+sAllowExt+")!')")
Response.End
End If
End Sub
子程序CheckValidExt很明显是用来检查扩展名的,就是先定义b=false,如果扩展名合法,b变为True,否则就弹出提示。
这两个我也没搞清楚到底哪个是在起作用,不过既然都在做同一项检查,就把这两个都CRACK了吧~
动手
第一个改成:
// 检测上传表单
function CheckUploadForm() {
return true
}
不管是什么,直接返回true就是了,哈哈。
第二个改成:
' 检测扩展名的有效性
Sub CheckValidExt(sExt)
Dim b, i, aExt
b = True
aExt = Split(sAllowExt, "|")
For i = 0 To UBound(aExt)
If LCase(aExt(i)) = sExt Then
b = True
Exit For
End If
NextEnd Sub
上来就把b定义成true的,任它怎么改也是true,呵呵,再把提示文字去掉。
再看最下面:
也是关于文件上传的,这个是检测是否使用了组件。
Function IsObjInstalled(strClassString)
On Error Resume Next
IsObjInstalled = False
Err = 0
Dim xTestObj
Set xTestObj = Server.CreateObject(strClassString)
If 0 = Err Then IsObjInstalled = True
Set xTestObj = Nothing
Err = 0
End Function
意思是先IsObjInstalled = False,然后如果检测到安装了组件,就返回IsObjInstalled = True。
不管怎么样,个人感觉就不要它检测组件了吧,统统用无组件的方式上传~。
修改后:
Function IsObjInstalled(strClassString)
On Error Resume Next
IsObjInstalled = False
Err = 0
Dim xTestObj
Set xTestObj = Server.CreateObject(strClassString)
If 0 = Err Then IsObjInstalled = False
Set xTestObj = Nothing
Err = 0
End Function
这样以来,整个edit目录再次上传以后,发现可以传任意格式的文件了。
[color=Red]不过要注意的问题是,这样修改十分不安全,如果某些人传一个ASPWebShell上去,后果不堪设想啊……大家慎用之!

Oops?
好久没动过eWebEditor了,谢谢您的资料~
\WebEditor\asp\config.asp 文件中第31行如下:
aStyle(9) = "coolblue|||blue|||coolblue|||uploadfile/|||550|||350|||rar|zip|exe|doc|xls|chm|hlp|pdf|txt|ppt|||swf|||gif|jpg|jpeg|bmp|||rm|mp3|wav|mid|midi|ra|avi|mpg|mpeg|asf|asx|wma|mov|||gif|jpg|jpeg|bmp|||5000|||100|||100|||100|||100|||1|||1|||EDIT|||1|||0|||0|||||||||1|||0|||(Default Style) Cool blue interface, blue tone, standard style, some of the commonly used buttons, standard suitable width for the interface|||1|||en|||0|||500|||300|||0|||Copyright...|||000000|||12|||Verdana||||||0|||jpg|jpeg|||300|||FFFFFF|||1"
程序中调用代码如下:
For i = 1 To Ubound(aStyle)
aStyleConfig = Split(aStyle(i), "|||")
If Lcase(sStyleName) = Lcase(aStyleConfig(0)) Then
bValidStyle = True
Exit For
End If
Next
我使用的是coolblue 样式,所以是上面的那一条记录啦,下面是针对Split出来的数组数据的描述
0=样式名称,
1=按钮图标文件夹,
2=Css样式文件夹,
3=上传文件保存位置,
4=最佳调用宽度,
5=最佳调用高度
文件类型:
6=其他,
7=动画,
8=图像,
9=媒体,
10=远程自动上传
文件大小:
11=其他,
12=动画,
13=图像,
14=媒体,
15=远程自动上传
无用设置:
16=是否显示状态栏,
17=是否在粘贴Word文档的时候提示清理,
18=默认编辑模式
19=路径模式:[0=相对路径,1=绝对路径,2=绝对根路径]
20=上传组件:[0=无组件上传,免费版本只提供无组件上传,如果想使用其他上传方式请与官方联系购买正式版]
21=保存模式:[用于将所上传的文件分目录保存,选项有:年月日目录,年月目录,日目录等,免费版本无此功能!]
23=显示路径
无用设置:
24=是否自动上传远程文件,
25=默认是否显示指导方针,
26=编辑器样式简介,
27=是否允许自动选择语言,
28=默认语言
无用设置:29=,30=,31=,32=,33=,34=,35=,36=,37=,38=,39=,40=,41=,42=