Maison >développement back-end >Golang >Comment puis-je limiter efficacement la taille des formulaires dans Golang pour améliorer la sécurité ?

Comment puis-je limiter efficacement la taille des formulaires dans Golang pour améliorer la sécurité ?

DDD
DDDoriginal
2024-11-30 04:44:11215parcourir

How Can I Effectively Limit Form Size in Golang to Enhance Security?

Limiter davantage la taille des formulaires dans Golang : un guide complet

Dans le contexte de l'utilisation de Golang, les limitations de taille des demandes de formulaire ont été soulevées comme un sujet de préoccupation. Par défaut, les requêtes de formulaire POST sont limitées à une taille maximale de 10 Mo.

Implémentation de limites plus strictes

Pour établir des limites encore plus strictes, on peut modifier la méthode ServeHTTP. Une approche courante consiste à utiliser la fonction MaxBytesReader :

r.Body = http.MaxBytesReader(w, r.Body, MaxFileSize)
err := r.ParseForm()
if err != nil {
    // Handle error (e.g., redirect to an error page)
    return
}

Gestion des erreurs et gestion des connexions

Lorsque vous rencontrez une erreur dans ParseForm(), la connexion sera fermée automatiquement. car MaxBytesReader définit un indicateur sur la réponse lorsque la limite est atteinte.

Supplémentaire Mesures de sécurité

Pour se prémunir contre les clients malveillants, il est conseillé de compléter la limite de taille du corps de la requête par des paramètres :

  • Server.ReadTimeout
  • Server.WriteTimeout
  • Server.MaxHeaderBytes

Définition des limites globales

Pour une application cohérente sur tous les gestionnaires, une fonction wrapper peut être créé pour appliquer la limite :

type maxBytesHandler struct {
    h http.Handler
    n int64
}

func (h *maxBytesHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
    r.Body = http.MaxBytesReader(w, r.Body, h.n) 
    h.h.ServeHTTP(w, r)
}

Le wrapper peut ensuite être utilisé dans la configuration du serveur :

s := http.Server{
    Addr: ":8080",
    Handler: &maxBytesReader{h:mux, n:4096},
}
log.Fatal(s.ListenAndServe())

Conclusion

Suivant Grâce à ces directives, les développeurs peuvent limiter efficacement la taille des formulaires dans Golang pour atténuer les risques de sécurité et éviter l'épuisement des ressources. MaxBytesReader reste l'approche recommandée pour atteindre cet objectif.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn