欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Golang 如何限制木馬圖片上傳服務器的實例

 更新時間:2022年02月20日 16:50:43   作者:Data-Mining  
本文主要介紹了Golang 如何限制木馬圖片上傳服務器的實例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

項目背景

自己開發(fā)了一個云對象存儲服務,用于存儲某個項目中所有的文件資源。

問題

在進行安全測試時,自己遇到了一個問題:無法限制木馬病毒模擬的圖片文件進行上傳。看似是一個圖片后綴的文件,其實是一個木馬腳本。比如圖片文件:muma.jpeg,我們使用 UltraEdit 編輯器打開這個文件,文件內(nèi)容如下圖所示:

然而,一個正常的 jpeg 圖片文件的內(nèi)容如下圖所示:

解決

那么如何解決這個問題呢?毫無疑問,我們要做的就是區(qū)分正真的圖片和木馬圖片。

經(jīng)過我一頓猛如虎的調(diào)研,終于找到了解決辦法,那就利用 Golang 語言的標準庫 —— image。

但是,有一個問題,image 庫并沒有支持所有圖片類型的校驗,目前僅支持 jpeg、gif、png 三種圖片格式。我們封裝一個方法,同時支持三種圖片格式的真實性校驗。

參考代碼如下:

func CheckImageFile(path, style string) (string, error) {
	f, err := os.Open(path)
	if err != nil {
		fmt.Errorf("打開文件失敗 %s", err.Error())
	}
	switch strings.ToUpper(style) {
	case "JPG", "JPEG":
		_, err = jpeg.Decode(f)
	case "PNG":
		_, err = png.Decode(f)
	case "GIF":
		_, err = gif.Decode(f)
	}
	if err != nil {
		fmt.Errorf("校驗文件類型失敗 %s", err.Error())
		return "", err
	}
	return "", nil
}

調(diào)用上述方法時,只需要傳入圖片路徑和后綴類型,就可以校驗文件的真實性。非常方便,本人已經(jīng)驗證通過。

到此這篇關于Golang 如何限制木馬圖片上傳服務器的實例的文章就介紹到這了,更多相關Golang 限制木馬圖片上傳 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Golang中Channel實戰(zhàn)技巧與一些說明

    Golang中Channel實戰(zhàn)技巧與一些說明

    channel是Go語言內(nèi)建的first-class類型,也是Go語言與眾不同的特性之一,下面這篇文章主要給大家介紹了關于Golang中Channel實戰(zhàn)技巧與一些說明的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-11-11
  • Go錯誤和異常CGO?fallthrough處理教程詳解

    Go錯誤和異常CGO?fallthrough處理教程詳解

    這篇文章主要為大家介紹了Go錯誤和異常CGO?fallthrough使用教程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • 深入探究Go語言從反射到元編程的實踐與探討

    深入探究Go語言從反射到元編程的實踐與探討

    反射和元編程是一些高級編程概念,它們使開發(fā)者能夠在運行時檢查、修改并控制程序的行為,了解反射和元編程的工作方式可以幫助我們更好地理解Go,以及如何在需要的時候高效地使用它們,文章中介紹的非常詳細,感興趣的同學可以參考下
    2023-05-05
  • go使用Gin框架利用阿里云實現(xiàn)短信驗證碼功能

    go使用Gin框架利用阿里云實現(xiàn)短信驗證碼功能

    這篇文章主要介紹了go使用Gin框架利用阿里云實現(xiàn)短信驗證碼,使用json配置文件及配置文件解析,編寫路由controller層,本文通過代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2021-08-08
  • 圖解Golang的GC垃圾回收算法

    圖解Golang的GC垃圾回收算法

    這篇文章主要介紹了圖解Golang的GC垃圾回收算法,詳細的介紹了三種經(jīng)典的算法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-03-03
  • Go語言LeetCode題解937重新排列日志文件

    Go語言LeetCode題解937重新排列日志文件

    這篇文章主要為大家介紹了Go語言LeetCode題解937重新排列日志文件,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • go語言中time包的各種函數(shù)總結

    go語言中time包的各種函數(shù)總結

    時間和日期是我們編程中經(jīng)常會用到的,下面這篇文章主要給大家介紹了關于go語言中time包的各種函數(shù)總結的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-04-04
  • Go整合captcha實現(xiàn)驗證碼功能

    Go整合captcha實現(xiàn)驗證碼功能

    最近在使用Go語言搞一個用戶登錄&注冊的功能,我們油然會產(chǎn)生一種增加驗證碼的想法。后來在GitHub上找到了這個名叫captcha的插件,于是就利用文檔進行了初步的學習,并融入到自己的項目中,整個過程下來感覺這個插件的設計非常巧妙
    2023-03-03
  • Windows下升級go版本過程詳解

    Windows下升級go版本過程詳解

    這篇文章主要為大家介紹了Windows下升級go版本過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • Go學習筆記之map的聲明和初始化

    Go學習筆記之map的聲明和初始化

    map底層是由哈希表實現(xiàn)的,Go使用鏈地址法來解決鍵沖突,下面這篇文章主要給大家介紹了關于Go學習筆記之map的聲明和初始化的相關資料,需要的朋友可以參考下
    2022-11-11

最新評論