如何防止木马性图片上传

这个代码我检验过没有问题,可以阻挡木马性图片的上传
<%
'***************************************************************
'CheckFileType 函数用来检查文件是否为图片文件
'参数filename是本地文件的路径
'如果是文件jpeg,gif,bmp,png图片中的一种,函数返回true,否则返回false
'***************************************************************

const adTypeBinary=1

dim jpg(1):jpg(0)=CByte(&HFF):jpg(1)=CByte(&HD8)
dim bmp(1):bmp(0)=CByte(&H42):bmp(1)=CByte(&H4D)
dim png(3):png(0)=CByte(&H89):png(1)=CByte(&H50):png(2)=CByte(&H4E):png(3)=CByte(&H47)
dim gif(5):gif(0)=CByte(&H47):gif(1)=CByte(&H49):gif(2)=CByte(&H46):gif(3)=CByte(&H39):gif(4)=CByte(&H38):gif(5)=CByte(&H61)
Response.Write CheckFileType(Server.MapPath("2.gif"))

function CheckFileType(filename)
on error resume next
CheckFileType=false
dim fstream,fileExt,stamp,i
fileExt=mid(filename,InStrRev(filename,".")+1)
set fstream=Server.createobject("ADODB.Stream")
fstream.Open
fstream.Type=adTypeBinary
fstream.LoadFromFile filename
fstream.position=0
select case fileExt
case "jpg","jpeg"
stamp=fstream.read(2)
for i=0 to 1
if ascB(MidB(stamp,i+1,1))=jpg(i) then CheckFileType=true else CheckFileType=false
next
case "gif"
stamp=fstream.read(6)
for i=0 to 5
if ascB(MidB(stamp,i+1,1))=gif(i) then CheckFileType=true else CheckFileType=false
next
case "png"
stamp=fstream.read(4)
for i=0 to 3
if ascB(MidB(stamp,i+1,1))=png(i) then CheckFileType=true else CheckFileType=false
next
case "bmp"
stamp=fstream.read(2)
for i=0 to 1
if ascB(MidB(stamp,i+1,1))=bmp(i) then CheckFileType=true else CheckFileType=false
next
end select
fstream.Close
set fseteam=nothing
if err.number<>0 then CheckFileType=false
end function
%>

posted on 2007-04-27 16:26 netlynx2000 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/netlynx2000/archive/2007/04/27/729968.html

如何防止木马性图片上传相关推荐

  1. 可实现自动设置尺寸的图片上传类

    基本上现在的各种网站都会涉及到图片上传,因此有一个适应性强的图片上传标准化类库是有必要的.该Class可以根据网站具体要求,通过一组自定义参数将图片尺寸按下述方式进行调整并上传到指定路径. 该类可以实 ...

  2. [Ting's笔记Day6]活用套件carrierwave gem:(1)在Rails实现图片上传功能

    carrierwave是一款经典的图片上传套件,本篇的目标是先在本地端(development)的rails项目试成功gem. (预计中集的进度会练习怎么利用Amazone S3架设图片上传Host, ...

  3. 一般网站上传图片的大小是多少?网站图片上传格式大小建议 附带简单修图方法

    一般网站上传图片的大小是多少呢?尚网汇智给您列一下网站图片上传格式大小建议: 首先,上传图片格式: 通常图片以JPG图片居多,JPG格式的图片较小,图片也比较柔和 不过特殊情况就要用特殊格式的图片了 ...

  4. CentOS7设置静态IP、搭建单机版FastDFS图片服务器、使用FastDFS-Client客户端进行简单测试、实现图片上传、实现商品添加修改删除

    CentOS7设置静态IP.搭建单机版FastDFS图片服务器.使用FastDFS-Client客户端进行简单测试.实现图片上传.实现商品添加修改删除 CentOS7设置静态IP而且还可以上网 192 ...

  5. MarkdownPad 2 激活方法与图片上传解决方案

    MarkdownPad 2 激活方法与图片上传解决方案 2019/5/8 16:06:38 作者:zyhhuige MarkdownPad 是一款非常好用的文本编辑工具,非常适合程序员写代码,除了代码 ...

  6. 淘淘商城第三天—完成商品添加功能 商品类目选择 图片上传 图片服务器搭建 kindEditor富文本编辑器的使用 商品添加功能

    1.实现商品类目选择功能 1.1需求 在商品添加页面,点击"选择类目"显示商品类目列表: 请求初始化树形控件的url:/item/cat/list 1.2 EasyUI tree数 ...

  7. ssm图片上传前端Ajax

    //头像上传前端html代码 <form action="" id="modifyUserFormPageUserform" enctype=" ...

  8. 中国菜刀使用(图片上传漏洞)

    图片上传漏洞: ps:此教程为靶场实战,切勿用于非法用途 1.准备制作图片马,随便找到一张图片重命名为1.jpg 2.准备好一句话木马,这里我命名为1.php 3. 需要用到dos命令将两个文件合到一 ...

  9. JAVA微信公众号开发第8篇JSSDK图片上传预览

    简介 博主微信JSSDK&图片上传预览基于微信分享做拓展,所以一些配置操作请点击查阅JAVA微信公众号开发第7篇JSSDK&微信分享博文 页面 <html><head ...

最新文章

  1. javascript脚本实现浏览器自动点击(阿里员工秒杀月饼)
  2. 构建之法读书笔记03
  3. 使用oracle和sqlserver的几点区别【转】
  4. ACM学习历程—HDU2476 String painter(动态规划)
  5. 【AI-1000问】Face detection、alignment、verification、identification(recognization) 你能分的清楚吗?
  6. vue中的ES6语法整理1
  7. 在visual studio 2010+中调用ffmpeg编译时 报错error LNK xxxx: 模块对于 SAFESEH 映像是不安全的。...
  8. Sql 四大排名函数(ROW_NUMBER、RANK、DENSE_RANK、NTILE)
  9. 【Elasticsearch】用ElasticSearch实现基于标签的兴趣推荐
  10. php session不生效_php验证session无效的解决方法
  11. 程序员 30 岁前,该如何规划自己的职业发展?
  12. Codeforces Round #462 (Div. 2): A. A Compatible Pair
  13. 2.Linux 高性能服务器编程 --- IP 协议详解
  14. 关于AndroidStudio结合百度地图Api开发的SHA1获取
  15. HDU 2201 熊猫阿波的故事
  16. LaTeX系统找不到指定文件解决方案
  17. JAVA黑白棋之算法浅析
  18. 我理解的嵌入式几个发展方向
  19. C4996 ‘scanf‘: This function or variable may be unsafe. Consider using scanf_s instead.错误提示
  20. Vue 项目导入字体文件

热门文章

  1. 函数,类模板全特化,偏特化
  2. 毫米波雷达技术及应用大解析
  3. efishell无法开机shell_efi shell 添加启动项 修复启动
  4. 设置Google文档离线同步,更好的高效离线工作
  5. python链接sql报错_python3.7连接sqlserver数据库失败报错20002, DB-Lib error message 20002
  6. vue2编译报错Class constructor VuexModule cannot be invoked without ‘new‘
  7. 第三讲:如何构建双活数据中心方案
  8. 修改远程计算机 时间,Pubwin服务器时间修改的四种办法
  9. Java开发入职新公司如何快速上手业务?
  10. 统计学三大相关系数之Pearson相关系数、Spearman相关系数