微标asp无组件上传类v1.3(无刷新ajax上传,可检查图片木马,支持多文件,utf-8版)

无·法 您的网络发生故障,内容加载失败 2018-08-13 09:22:49
微标asp无组件上传类v1.3(无刷新ajax上传,可检查图片木马,支持多文件,utf-8版)




请将本程序放到你的虚拟主机上运行,如果本地有iis也可以。有些同学有简易iis服务器,不适用本程序的,因为有部分中文字符不能识别导致无法运行。
如果需要上传单文件可以把index.htm中的multiple="multiple"删除掉,对应的多文件前端显示及处理需要您对upload.asp进行修改调整,然后前端ajax获取数据进行处理。

关于“无组件上传类 Version 0.96”修改摘要:
'修改点 : v0.97 修复了一个错误。当用户在同一个file控件选择多个文件上传时file.add语句会出错, 2018-06-04
'   原因是键值冲突,本版本对键值做了唯一化处理。
' v0.98 将Charset="gb2312" 改成Charset="utf-8",所有文件格式都改成utf8了 2018-8-11
' 修改了在上传的时候检查图片是否被注入了代码,比如<% 、request 等关键字符


相关参数设置:

1.ajax_upload.asp中的参数设置说明:
(1).SavePath 上传目录,默认为“uploadfiles”。

2.clsUpload.asp中的参数设置说明:
(1).AllowFiles 所允许上传的文件格式,默认为"jpg,jpeg,gif,png"。
(2).MaxDownFileSize 允许上传的文件大小,默认30M,注意iis默认限制就几百k,您需要在iis那儿做设置,网站 - asp - 限制属性 - 最大请求实体主体限制,加上两个0,改成20000000,这样就改成20M了。

3.index.htm中的参数说明
在第27和32行,分别是判断类型和大小的,可手动修改。这里是前端检测文件类型和大小的,可减轻服务器工作。后端要等文件post完成才能开始检测,假设误选择了个几百兆的exe、rar等文件网页直接卡死。


提示:在clsUpload.asp的第134行对文件中可能存在的危险asp代码做了简单的检查,具体是判断是否包含“request”字符串,如果需要对其他代码判断可在此处修改。建议不要以判断<%、eval、%>这3个特殊字符串来确定图片木马,因为正常文件中可能也有,而且有些图马文件没有<%。

程序提供了两个图马文件供测试,用记事本打开可以看到底部的asp代码。自己也可以做图片木马文件,具体做法自己百度。


asp无组件上传类v0.98,几大特色:
1.无组件
2.可检测简单的图片木马文件
3.支持中文命名的图片
4.ajax无刷新,不用frame!
5.可返回图片服务器路径
6.速度快
7.支持多文件
8.全新utf-8版
9.免费稳定


详细介绍:https://blog.csdn.net/sysdzw/article/details/80562058
下载地址:https://github.com/sysdzw/aspupload

...全文
1381 19 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
无·法 您的网络发生故障,内容加载失败! 2020-03-27
  • 打赏
  • 举报
回复
无·法 您的网络发生故障,内容加载失败! 2020-03-26
  • 打赏
  • 举报
回复
无·法 您的网络发生故障,内容加载失败! 2020-03-26
  • 打赏
  • 举报
回复
lm5580409 2018-12-07
  • 打赏
  • 举报
回复
谢谢分享!!!!!!!!!
amuie 2018-10-15
  • 打赏
  • 举报
回复
都说了正则不是完全对比,你可以当他是一个正则规则在一段代码里出现的次数,比如eval你可以判断eval后面有没有带括号,括号有没有引号,有没有代码,你可以先去了解下正则
无·法 您的网络发生故障,内容加载失败! 2018-10-15
  • 打赏
  • 举报
回复
我的类里面判断方法,就是判断是否存在这些字。 本想判断asp标记对中是否出现这个,但是发现有些图片图片文件乱码方式打开竟然没有百分号,所以asp标记对不能做为判断标准了。

vMumaKeyWord = split("request|execute|wscript.shell|activexobject|include|function|.encode|.getfolder|.createfolder|.deletefolder|.createdirectory|.deletedirectory|.saveas|.createobject","|") '
for intMKW=0 to ubound(vMumaKeyWord)
if instr(strContent,vMumaKeyWord(intMKW))>0 then
if instr(oFileInfo.FileType,"image/")>0 then
oFileInfo.ErrCode=3
oFileInfo.ErrMsg="要上传的图片“" & sFileName & "”含有木马。" & vMumaKeyWord(intMKW)
else
oFileInfo.ErrCode=4
oFileInfo.ErrMsg="要上传的文件“" & sFileName & "”含有木马。" & vMumaKeyWord(intMKW)
end if
exit for
end if
next
无·法 您的网络发生故障,内容加载失败! 2018-10-15
  • 打赏
  • 举报
回复
引用 11 楼 amuie 的回复:
加入到fso.asp里就可以了,api改回easp就可以直接调用
我那个改了不少东西,你要可以发你,没上传git
没用过easp,想大概问下你的判断是否是用正则是否在一片“乱码”中判断关键字出现在<% %>内的? 如果是这样那么没有意义。
amuie 2018-10-14
  • 打赏
  • 举报
回复
http://111.231.91.58
amuie 2018-10-14
  • 打赏
  • 举报
回复
加入到fso.asp里就可以了,api改回easp就可以直接调用
我那个改了不少东西,你要可以发你,没上传git
无·法 您的网络发生故障,内容加载失败! 2018-10-07
  • 打赏
  • 举报
回复
引用 9 楼 amuie 的回复:
easp上改的一个mvc框架,你百度搜easp就有了
下载了没找到相关代码。 可否直接贴下?如果合适的话添加到库里,可以将你大名加入。
amuie 2018-10-06
  • 打赏
  • 举报
回复
easp上改的一个mvc框架,你百度搜easp就有了
无·法 您的网络发生故障,内容加载失败! 2018-10-05
  • 打赏
  • 举报
回复
引用 7 楼 amuie 的回复:
引用 6 楼 sysdzw 的回复:
而且你的代码会误杀的。不能以判断script和eval为准的,因为正常的文件也会随机出现eval,然后图片文件通常都会有Description这的单词,你这script就包含了。
api是写的一个class框架类调用,意思就是正则判断,有注析,eval和script你完全可以在正则里写更详细的规则去判断,他不是InStr完全去对比字符串
可否提供代码交流下?
amuie 2018-10-05
  • 打赏
  • 举报
回复
引用 6 楼 sysdzw 的回复:
而且你的代码会误杀的。不能以判断script和eval为准的,因为正常的文件也会随机出现eval,然后图片文件通常都会有Description这的单词,你这script就包含了。
api是写的一个class框架类调用,意思就是正则判断,有注析,eval和script你完全可以在正则里写更详细的规则去判断,他不是InStr完全去对比字符串
无·法 您的网络发生故障,内容加载失败! 2018-10-04
  • 打赏
  • 举报
回复
而且你的代码会误杀的。不能以判断script和eval为准的,因为正常的文件也会随机出现eval,然后图片文件通常都会有Description这的单词,你这script就包含了。
无·法 您的网络发生故障,内容加载失败! 2018-10-04
  • 打赏
  • 举报
回复
引用 4 楼 amuie 的回复:
这才是木马检测

'检测图片是否合法
Public Function isImg(ByVal Path)
Path = absPath(Path) '获取绝对路径
If Not isFile(Path) Then isImg = False : Exit Function
Dim tamp, i, ext, sun, obj, str : obj = 0
'检测图片内容非法字符
str = "script|execute|eval|\#\@\~\^.+?\=\=\^\#\~\@|wscript.shell|activexobject|include|sub|function" &_
"|.getfolder|.createfolder|.deletefolder|.createdirectory|.deletedirectory|.saveas|.createobject"
'正则对比
If Api.Str.Test(Read(Path), str) Then isImg = False : Exit Function
'识别格式
Select Case ExtOf(Path)
Case ".jpg", ".jpeg" : ext = Array(&HFF, &HD8) : sun = 1
Case ".gif" : ext = Array(&H47, &H49, &H46, &H39, &H38, &H61) : sun = 5
Case ".png" : ext = Array(&H89, &H50, &H4E, &H47) : sun = 3
Case ".bmp" : ext = Array(&H42, &H4D) : sun = 1
Case Else isImg = False : Exit Function
End Select
With Server.CreateObject("ADODB.Stream")
.Open
.Type = 1
.LoadFromFile Path
.Position = 0
tamp = .Read
.Close
End With
'检测图片开头二进制特征
For i = 0 To sun
If Ascb(Midb(tamp, i + 1, 1)) = CByte(ext(i)) Then obj = obj + 1
Next
If (obj - 1) = sun Then isImg = True Else isImg = False
End Function
有完整代码吗?api. 是什么?
amuie 2018-10-04
  • 打赏
  • 举报
回复
这才是木马检测

'检测图片是否合法
Public Function isImg(ByVal Path)
Path = absPath(Path) '获取绝对路径
If Not isFile(Path) Then isImg = False : Exit Function
Dim tamp, i, ext, sun, obj, str : obj = 0
'检测图片内容非法字符
str = "script|execute|eval|\#\@\~\^.+?\=\=\^\#\~\@|wscript.shell|activexobject|include|sub|function" &_
"|.getfolder|.createfolder|.deletefolder|.createdirectory|.deletedirectory|.saveas|.createobject"
'正则对比
If Api.Str.Test(Read(Path), str) Then isImg = False : Exit Function
'识别格式
Select Case ExtOf(Path)
Case ".jpg", ".jpeg" : ext = Array(&HFF, &HD8) : sun = 1
Case ".gif" : ext = Array(&H47, &H49, &H46, &H39, &H38, &H61) : sun = 5
Case ".png" : ext = Array(&H89, &H50, &H4E, &H47) : sun = 3
Case ".bmp" : ext = Array(&H42, &H4D) : sun = 1
Case Else isImg = False : Exit Function
End Select
With Server.CreateObject("ADODB.Stream")
.Open
.Type = 1
.LoadFromFile Path
.Position = 0
tamp = .Read
.Close
End With
'检测图片开头二进制特征
For i = 0 To sun
If Ascb(Midb(tamp, i + 1, 1)) = CByte(ext(i)) Then obj = obj + 1
Next
If (obj - 1) = sun Then isImg = True Else isImg = False
End Function
qq_42999894 2018-08-17
  • 打赏
  • 举报
回复
收藏了。谢楼主
hookee 2018-08-13
  • 打赏
  • 举报
回复

28,409

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧