Golang で HTTP ファイル アップロード セキュリティを実装するには、次の手順に従う必要があります: ファイル タイプを確認します。ファイルサイズを制限します。ウイルスやマルウェアを検出します。ファイルを安全に保管します。
Golangを使用してHTTPファイルアップロードのセキュリティを実装する方法
ファイルのアップロードを受け入れるときは、アップロードされたファイルのセキュリティを確保することが重要です。 Golang では、HTTP ファイル アップロードのセキュリティは次の手順で実現できます:
1. ファイル タイプを検証する
画像やドキュメントなど、予期されるファイル タイプのみが受け入れられます。 mime/multipart
パッケージを使用して、ファイルの種類を解析し、拡張子を確認します。 mime/multipart
包来解析文件类型并检查扩展名。
import ( "mime/multipart" "net/http" ) // parseFormFile 解析 multipart/form-data 请求中的文件 func parseFormFile(r *http.Request, _ string) (multipart.File, *multipart.FileHeader, error) { return r.FormFile("file") }
2. 限制文件大小
确定文件大小限制并使用 io.LimitReader
import "io" // limitFileSize 限制上传文件的大小 func limitFileSize(r io.Reader, limit int64) io.Reader { return io.LimitReader(r, limit) }
2. ファイル サイズの制限
ファイル サイズの制限を決定し、制限を超えないようにio.LimitReader
を使用してアップロードされたファイルをラップします。 import ( "fmt" "io" "github.com/metakeule/antivirus" ) // scanFile 扫描文件以查找病毒 func scanFile(r io.Reader) error { s, err := antivirus.NewScanner() if err != nil { return err } if res, err := s.ScanReader(r); err != nil { return err } else if res.Infected() { return fmt.Errorf("文件包含病毒") } return nil }
3. ウイルスとマルウェアを検出する
ウイルス対策スキャナーまたはマルウェア スキャナーを使用して、アップロードされたファイルをスキャンします。これにより、ファイルのアップロードを通じてマルウェアが拡散するのを防ぎます。import ( "bytes" "io" "net/http" "github.com/gin-gonic/gin" ) func fileUpload(c *gin.Context) { file, header, err := c.Request.FormFile("file") if err != nil { c.JSON(http.StatusBadRequest, gin.H{ "error": "无法解析文件", }) return } if header.Size > 1024*1024 { c.JSON(http.StatusBadRequest, gin.H{ "error": "文件太大", }) return } if _, err := io.Copy(bytes.NewBuffer(nil), file); err != nil { c.JSON(http.StatusInternalServerError, gin.H{ "error": "文件扫描失败", }) return } c.JSON(http.StatusOK, gin.H{ "message": "文件上传成功", }) }
4. ファイルを安全に保存する
保護されたディレクトリやクラウド ストレージ サービスなど、アップロードされたファイルを保存する安全な保存場所を選択します。実践的な例:
🎜🎜これは、Gin フレームワークを使用して安全な HTTP ファイル アップロードを実装する Golang コード例です: 🎜rrreee🎜これらの手順に従い、必要なコードを実装することで、Golang で HTTP 経由でアップロードされたファイルを安全に保護できます。アプリケーションのセキュリティ。 🎜以上がGolang を使用して HTTP ファイル アップロードのセキュリティを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。