如何保证上传文件的安全

freeflying1222 2009-07-30 10:31:55
我所能知道的就是:1、检查文件后缀名;2、检查mime类型。
但据说后缀和MIME都可以改。
那什么才安全呢?
大家通常是怎么做的呢?

其实我更感兴趣的是,上传的恶意文件,是如何干坏事的,呵呵。有哪位高手能指点一二,就先谢过了。
...全文
469 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
shuihanjianleng 2012-05-24
  • 打赏
  • 举报
回复
在客户端怎么检测?
kingliutt 2009-07-30
  • 打赏
  • 举报
回复
同意楼上见解,支持
chenger19890917 2009-07-30
  • 打赏
  • 举报
回复
程序都检验完了还没有办法的话
就采用上传成功之后马上调用杀毒软件对上传文件检测
这是最后一个办法
kangsong 2009-07-30
  • 打赏
  • 举报
回复
- -问腾讯去- - 我給别人传VBS文件,直接給打回来拒绝!!!
不过一般人家该后缀了你也无法去拒绝了,想干坏事就用JS挂马,SQL注入!
MissingWen 2009-07-30
  • 打赏
  • 举报
回复
Mark And Up ...
老Key 2009-07-30
  • 打赏
  • 举报
回复
强烈建议lz去学黑客。呵呵
freeflying1222 2009-07-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 cpp2017 的回复:]
mime是可以改,但改了正常运行应该有问题,除非是文本,不需要直接运行的,

一般上传的是一些js脚本,或后台脚本程序如asp等...

[/Quote]

上传了又有什么用呢?比如最后都变成<img src="malicious.ashx"/>,嗯,还是很能干些坏事
cpp2017 2009-07-30
  • 打赏
  • 举报
回复
mime是可以改,但改了正常运行应该有问题,除非是文本,不需要直接运行的,

一般上传的是一些js脚本,或后台脚本程序如asp等...
chenger19890917 2009-07-30
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 freeflying1222 的回复:]
引用 10 楼 chenger19890917 的回复:
引用 9 楼 freeflying1222 的回复:
引用 6 楼 chenger19890917 的回复:
程序都检验完了还没有办法的话
就采用上传成功之后马上调用杀毒软件对上传文件检测
这是最后一个办法

哈哈哈~~~

lz笑啥啊,这也是一个办法呢,
这是没有办法了的办法

随便笑笑,没什么意思!
[/Quote]
呃呃,,
freeflying1222 2009-07-30
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 chenger19890917 的回复:]
引用 9 楼 freeflying1222 的回复:
引用 6 楼 chenger19890917 的回复:
程序都检验完了还没有办法的话
就采用上传成功之后马上调用杀毒软件对上传文件检测
这是最后一个办法

哈哈哈~~~

lz笑啥啊,这也是一个办法呢,
这是没有办法了的办法
[/Quote]
随便笑笑,没什么意思!
imshi 2009-07-30
  • 打赏
  • 举报
回复
以前网上找的,没有试过你可以试一下可行否
检测真实的文件类型函数:
private bool IsAllowedExtension(HttpPostedFile hifile)
{
bool ret = false;

System.IO.FileStream fs = new System.IO.FileStream(hifile.FileName, System.IO.FileMode.Open, System.IO.FileAccess.Read);
System.IO.BinaryReader r = new System.IO.BinaryReader(fs);
string fileclass = "";
byte buffer;
try
{
buffer = r.ReadByte();
fileclass = buffer.ToString();
buffer = r.ReadByte();
fileclass += buffer.ToString();
}
catch
{
return false;
}
r.Close();
fs.Close();
/*文件扩展名说明
*7173 gif
*255216 jpg
*13780 png
*6677 bmp
*239187 txt,aspx,asp,sql
*208207 xls.doc.ppt
*6063 xml
*6033 htm,html
*4742 js
*8075 xlsx,zip,pptx,mmap,zip
*8297 rar
*01 accdb,mdb
*7790 exe,dll
*5666 psd
*255254 rdp
*10056 bt种子
*64101 bat
*/


String[] fileType = { "255216", "7173", "6677", "13780", "8297", "5549", "870", "87111", "8075" };

for (int i = 0; i < fileType.Length; i++)
{
if (fileclass == fileType[i])
{
ret = true;
break;
}
}
return ret;
}
qianlinlin 2009-07-30
  • 打赏
  • 举报
回复
我到挺佩服黑客的,\(^o^)/~
chenger19890917 2009-07-30
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 freeflying1222 的回复:]
引用 6 楼 chenger19890917 的回复:
程序都检验完了还没有办法的话
就采用上传成功之后马上调用杀毒软件对上传文件检测
这是最后一个办法

哈哈哈~~~
[/Quote]
lz笑啥啊,这也是一个办法呢,
这是没有办法了的办法
freeflying1222 2009-07-30
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 chenger19890917 的回复:]
程序都检验完了还没有办法的话
就采用上传成功之后马上调用杀毒软件对上传文件检测
这是最后一个办法
[/Quote]
哈哈哈~~~
freeflying1222 2009-07-30
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 guoluren_kang 的回复:]
强烈建议lz去学黑客。呵呵
[/Quote]
其实正有这个想法

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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