C#判斷上傳文件是否是圖片以防止木馬上傳的方法
很多時(shí)候木馬程序會(huì)偽裝成其他格式的文件上傳到網(wǎng)站,最常見(jiàn)的如圖片格式。本文就以C#為例講述C#判斷上傳文件是否是圖片以防止木馬上傳的方法,具體方法如下:
方法一:用image對(duì)象判斷是否為圖片
/// <summary> /// 判斷文件是否為圖片 /// </summary> /// <param name="path">文件的完整路徑</param> /// <returns>返回結(jié)果</returns> public Boolean IsImage(string path) { try { System.Drawing.Image img = System.Drawing.Image.FromFile(path); return true; } catch (Exception e) { return false; } }
方法二,判斷文件頭
/// <summary> /// 根據(jù)文件頭判斷上傳的文件類(lèi)型 /// </summary> /// <param name="filePath">filePath是文件的完整路徑 </param> /// <returns>返回true或false</returns> private bool IsPicture(string filePath) { try { FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read); BinaryReader reader = new BinaryReader(fs); string fileClass; byte buffer; buffer = reader.ReadByte(); fileClass = buffer.ToString(); buffer = reader.ReadByte(); fileClass += buffer.ToString(); reader.Close(); fs.Close(); if (fileClass == "255216" || fileClass == "7173" || fileClass == "13780" || fileClass == "6677") //255216是jpg;7173是gif;6677是BMP,13780是PNG;7790是exe,8297是rar { return true; } else { return false; } } catch { return false; } }
測(cè)試顯示方法二針對(duì)常規(guī)修改的木馬有效,也就是直接修改擴(kuò)展名的,比如把.asp改成.jpg這種。但是對(duì)于那種用工具生成的jpg木馬則沒(méi)有效果。此時(shí)推薦大家使用第一種方法。
- C#實(shí)現(xiàn)HTTP上傳文件的方法
- C# 通用文件上傳類(lèi)
- asp.net(c#)開(kāi)發(fā)中的文件上傳組件uploadify的使用方法(帶進(jìn)度條)
- C# 文件上傳 默認(rèn)最大為4M的解決方法
- asp.net(C#)中上傳大文件的幾中常見(jiàn)應(yīng)用方法
- C#采用HttpWebRequest實(shí)現(xiàn)保持會(huì)話上傳文件到HTTP的方法
- ASP.NET(C#)實(shí)現(xiàn)一次性動(dòng)態(tài)上傳多張圖片的代碼(多個(gè)文件)
- C#實(shí)現(xiàn)Web文件上傳的兩種方法實(shí)例代碼
- jQuery結(jié)合C#實(shí)現(xiàn)上傳文件的方法
- C#實(shí)現(xiàn)文件上傳以及多文件上傳功能
相關(guān)文章
Unity3D啟動(dòng)外部程序并傳遞參數(shù)的實(shí)現(xiàn)
這篇文章主要介紹了Unity3D啟動(dòng)外部程序并傳遞參數(shù)的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04WindowsForm實(shí)現(xiàn)TextBox占位符Placeholder提示功能
這篇文章主要介紹了WindowsForm實(shí)現(xiàn)TextBox占位符Placeholder提示,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07淺析C#中靜態(tài)方法和非靜態(tài)方法的區(qū)別
C#靜態(tài)方法與非靜態(tài)方法的區(qū)別不僅僅是概念上的,那么他們有什么具體的區(qū)別呢?讓我們通過(guò)本文向大家介紹下C#中靜態(tài)方法和非靜態(tài)方法的區(qū)別,一起看看吧2017-09-09C# winfrom 模擬ftp文件管理實(shí)現(xiàn)代碼
從網(wǎng)上找到的非常好用的模擬ftp管理代碼,整理了一下,希望對(duì)需要的人有幫助2014-01-01c#求范圍內(nèi)素?cái)?shù)的示例分享(c#求素?cái)?shù))
問(wèn)題是判斷101-200之間有多少個(gè)素?cái)?shù),并輸出所有素?cái)?shù)。下面是使用C#解決這個(gè)問(wèn)題的方法 ,需要的朋友可以參考下2014-03-03C#使用DevExpress中的SplashScreenManager控件實(shí)現(xiàn)啟動(dòng)閃屏和等待信息窗口
這篇文章介紹了C#使用DevExpress中的SplashScreenManager控件實(shí)現(xiàn)啟動(dòng)閃屏和等待信息窗口的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05