USKD48YPPEL7G4V5 F18PHEU9XWR8ZUWP
或者
H67HEYAKDY9E2R21 Y20HAEPJSQ78C3QD
或者
W0JZ6Z5XPNQ3G51E 1N8J5Q99EJ5T75G9
祝您生活愉快!
可以防止,第一种就是用文件头的方式验证,代码如下:private bool IsAllowedExtension(HttpPostedFile hifile)
{
bool result = false
FileStream strFile = new FileStream(hifile.FileName, System.IO.FileMode.Open, System.IO.FileAccess.Read)
BinaryReader bReader = new BinaryReader(strFile)
string fileclass = ""
byte buffer
try
{
buffer = bReader.ReadByte()
fileclass = buffer.ToString()
buffer = bReader.ReadByte()
fileclass += buffer.ToString()
}
catch
{
return false
}
bReader.Close()
strFile.Close()
/*文件扩展名说明
*4946/104116 txt
*7173gif
*255216 jpg
*13780 png
*6677bmp
*239187 txt,aspx,asp,sql
*208207 xls.doc.ppt
*6063xml
*6033htm,html
*4742js
*8075xlsx,zip,pptx,mmap,zip
*8297rar
*01 accdb,mdb
*/
//纯图片
String[] fileType = {
"7173",//gif
"255216", //jpg
"13780"//png
}
for (int i = 0i <fileType.Lengthi++)
{
if (fileclass == fileType[i])
{
result = true
break
}
}
Response.Write(fileclass)
return result
}
protected void btnOk_Click(object sender, EventArgs e)
{
if (IsAllowedExtension(uFile.PostedFile))
{
Response.Write("<script>alert('OK')</script>")
}
}
第二种用文件流的方式验证
/// <summary>
/// 验证流
/// </summary>
/// <param name="UpFile">上传控件(HttpPostedFile 或 HtmlInputFile)</param>
/// <param name="_extensions">扩展名(数组)</param>
/// <param name="SavePath">保存路径(绝对路径)</param>
/// <param name="size">文件大小单位(KB)</param>
/// <param name="err">错误信息</param>
/// <param name="SourcePage">源页面</param>
/// <returns>返回新文件名</returns>
public static string UpLoadFileImg(HtmlInputFile UpFile, string[] _extensions, string SavePath, int size,
out string err, System.Web.UI.Page SourcePage)
{
//锁定页面
SourcePage.Application.Lock()
string error = String.Empty//错误信息
string Img = UpFile.PostedFile.FileName.Trim()//获取文件名
string Exten = Path.GetExtension(UpFile.PostedFile.FileName).ToLower()//获取文件的扩展名
bool IsExtension = false//是否存在该扩展名
string FileType = UpFile.PostedFile.ContentType.ToLower()//获取文件的类型
if (Img != "")
{
//判断图片扩展名和类型验证
for (int i = 0i <_extensions.Lengthi++)
{
if (Exten == _extensions[i].ToString())
{
IsExtension = true
break
}
}
if (!IsExtension &&(FileType != "image/gif" || FileType != "image/x-png" || FileType != "image/pjpeg"
|| FileType != "image/bmp"))
{
error = "对不起,您不能上传该类型的文件!"
err = error
return Img
}
if (UpFile.PostedFile.ContentLength >(size * 1024))
{
error = "对不起,文件大小不能大于" + size + "KB!"
err = error
return Img
}
try
{
Img = DateTime.Now.Ticks + Exten//重新给文件命名
//上传文件
UpFile.PostedFile.SaveAs(SavePath + Img)
//最后一步高级验证,图片上传后的操作,判断是否存在危险
StreamReader sr = new StreamReader(SavePath + Img, Encoding.Default)
string strContent = sr.ReadToEnd()
sr.Close()
string str = "request|.getfolder|.createfolder|.deletefolder|.createdirectory|.deletedirectory|.saveas"
str+="|wscript.shell|script.encode|server.|.createobject|execute|activexobject|language="
foreach (string s in str.Split('|'))
{
if (strContent.IndexOf(s) != -1)
{
File.Delete(SavePath + Img)
error = "对不起,该文件内容存在风险,禁止上传!"
err = error
return Img
}
}
}
catch
{
error = "系统错误,上传失败!"
}
}
else
error = "对不起,请选择要上传的文件!"
//取消锁定页面
SourcePage.Application.UnLock()
err = error
return Img
}