Maison > développement back-end > Golang > Comment limiter efficacement la taille des demandes de formulaire dans Go ?

Comment limiter efficacement la taille des demandes de formulaire dans Go ?

Barbara Streisand
Libérer: 2024-12-01 19:45:13
original
675 Les gens l'ont consulté

How to Effectively Limit Form Request Sizes in Go?

Définir des limites de taille pour les demandes de formulaire dans Go

Contrôler la taille des demandes de formulaire est crucial pour éviter la monopolisation des ressources et les risques de sécurité. Bien que Go impose déjà une limite de 10 Mo pour les requêtes POST, une limitation supplémentaire de la taille peut être nécessaire dans certains scénarios.

Pour limiter la taille dans votre méthode ServeHTTP, utilisez l'approche suivante :

r.Body = http.MaxBytesReader(w, r.Body, MaxFileSize) 
err := r.ParseForm()
if err != nil {
  return // Handle error (e.g., redirect or set error status code)
}
Copier après la connexion

Gestion des erreurs

Lorsque la limite est atteinte, MaxBytesReader définit un indicateur sur le réponse. Par conséquent, le serveur met fin à la connexion en quittant le gestionnaire. Cette approche empêche efficacement une consommation excessive de données.

Mesures de sécurité supplémentaires

Pour une protection renforcée contre les clients malveillants, envisagez de définir des délais d'attente de serveur supplémentaires : Server.ReadTimeout, Server.WriteTimeout, et potentiellement Server.MaxHeaderBytes.

Taille globale Limite

Pour appliquer une limite de taille à tous les gestionnaires, créez un gestionnaire wrapper et configurez-le comme suit :

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)
}

func main() {
  log.Fatal(http.ListenAndServe(":8080", &maxBytesHandler{h: mux, n: 4096}))
}
Copier après la connexion

Conclusion

L'utilisation de MaxBytesReader limite efficacement la taille des requêtes de formulaire et garantit que les clients malveillants ne peuvent pas exploiter les ressources de votre serveur. Pour une protection complète, combinez cette approche avec des délais d'attente supplémentaires et des limites de taille d'en-tête.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal