Request Entity Too Large [terminé]

Schonke

New Member
#1
Bonjour,
J'ai ce message à la soumission d'un formulaire en utilisant le mode post :
Request Entity Too Large
The requested resource does not allow request data with POST requests, or the amount of data provided in the request exceeds the capacity limit.

Je dépasse sans doute la limite autorisée. Y-a-t-il un moyen de forcer cette limite ?

Merci.
 

Schonke

New Member
#2
J'ai créé un .htaccess dans lequel j'ai mis :
php_value upload_max_filesize 700M
php_value post_max_size 900M
php_value memory_limit 1G

phpinfo() me donne bien ces valeurs dans la colonne local.

Mais ce n'est pas mieux.
 

Schonke

New Member
#3
STOP, ça n'a pas d'intérêt. Je ne vois pas pourquoi mon POST dépasserait les 128M de la valeur par défaut de upload_max_filesize et de post_max_size avec 2 photos et un peu de commentaire.
Alors pourquoi ai-je cette erreur ?
 

PH-Saber

Administrator
Membre du personnel
#4
Bonjour,

Par mesure de sécurité, mod_security set le SecRequestBodyLimit à 128MB (SecRequestBodyLimit 134217728). Il est possible de personnaliser cela avec N0C au besoin.
 

Schonke

New Member
#5
Merci pour votre réponse. 128MB, c'est largement suffisant. Ne serait-ce pas plutôt SecRequestBodyNoFilesLimit qui serait à modifier car il s'agit de variables POST ? Pouvez-vous me dire où on peut modifier cela via N0C en n'oubliant pas que j'ai un abonnement WorldLite ?
Merci.
 

PH-Saber

Administrator
Membre du personnel
#6
Bonjour,

C'est set à ceci:

SecRequestBodyNoFilesLimit 1048576
SecRequestBodyInMemoryLimit 131072

Quelle taille exactement le fichier que vous essayez d'uploader?
 

Schonke

New Member
#7
Bonjour,
Le plus simple est de vous exposer ce que je fais :
J'ai un form HTML composé d'un certain nombre de valeurs texte et de 2 input de type hidden. Ces 2 input sont alimentés soit par drag and drop soit par copie d'un fichier image. Ces 2 input sont au format BASE64, c'est donc du texte. C'est au submit du form que j'ai l'erreur.
Ce n'est pas un upload mais un submit de form.
Je viens de faire une trace et voici les tailles des 2 input :
1. 190330 B (soit 186 kB)
2. 836130 B (soit 817 kB)
Donc si on additionne les 2 valeurs et les autres input, on risque de dépasser 1MB.
Merci pour votre aide.
 

Schonke

New Member
#8
Précision supplémentaire : Le but de l'opération est de stocker ces 2 images dans une base mysql.
 

PH-Saber

Administrator
Membre du personnel
#9
Bonjour,

Je ne vois rien d'anormal sur l'infrastructure. Voyez si vous pouvez reproduire ce bug en local, ça peut être lié au développement/webmastering?
 

Schonke

New Member
#10
Désolé, je ne peux pas reproduire le bug en local car ça fonctionne en local. Pire, j'ai un site bas de gamme sur free.fr qui fonctionne également parfaitement. Y-a-t-il moyen de mettre en place une trace pour mettre en évidence le problème ? Via N0C par exemple ?
Vous comprendrez que le but est de mettre en place mon site pour le voir fonctionner, de manière à passer à un site payant, le cas échéant.
Merci.
 

PH-Saber

Administrator
Membre du personnel
#11
Vous pouvez me fournir en PM votre domaine, je vais voir si je peux reproduire cela de mon côté ;)
 

Schonke

New Member
#12
Bonjour,
Je vous ai mis ça dans une conversation.
Mais ne vous précipitez pas, je vais encore faire plusieurs tests comme n'envoyer que la grande image ou que la petite, utiliser Edge au lieu de Firefox, refaire les tests en local et chez free,...
A bientôt ;)
 

Schonke

New Member
#14
Bilan des tests :
Pour tous les tests, j'ai pris la même image. Il faut savoir que l'image est retaillée par javascript :
1. Une image de petite taille (max 200 x 250 px).
2. Une autre de plus grande taille (max 700 x 600 px). Elle fait 836130 B.
Les 2 sont envoyées en mode post par submit form.

Site de base :
En local et avec free, tout fonctionne que ce soit avec Edge ou Firefox. Avec WorldLite, erreur 413 avec Firefox et 403 avec Edge.

Modification 1 :
1. Une image de petite taille (max 200 x 250 px).
2. Une autre de même taille.

Avec WorldLite, cela fonctionne.

Modifications 2 :
1. Une image de plus petite taille (max 100 x 125 px, puis max 20 x 25 px, puis max 2 x 3 px).
2. Une autre de plus grande taille (max 700 x 600 px).

Pour les 3 tests, j'ai eu erreur 403 avec WorldLite.

Modification 3 :
1. Une image de petite taille (max 200 x 250 px).
2. Une autre de grande taille (max 350 x 300 px). Elle fait 228338 B.

Erreur 403 avec WorldLite.

Modification 4 :
1. Une image de petite taille (max 200 x 250 px).
2. Une autre de grande taille (max 301 x 258 px). Elle fait 171838 B.

Cela fonctionne avec WorldLite.

En conclusion :
Pour moi, il y a 2 limites :
- une pour la totalité des valeurs du form qui doit avoisiner 1 GB. ---> erreur 413.
- une pour chaque valeur du form aux alentours de 200 MB. ---> erreur 403.
La différence entre Firefox et Edge pourrait s'expliquer par une meilleure compression pour Edge permettant d'éviter l'erreur 413, mais pas l'erreur 403.

A vous de jouer :D
 

Schonke

New Member
#15
La réponse que vous m'avez faite par conversation me confirme mes craintes : il y a bien des limites qui ne peuvent être modifiées qu'en prenant l'offre The World qui est évidemment payante.
Je vais réfléchir.
Merci pour votre aide.
 

PH-Saber

Administrator
Membre du personnel
#16
L'offre World Lite a mod_security actif par défaut. Ce n'est pas une limite en soi mais un moyen de protection standard.

D'après les logs, c'est bien mod_security qui fait le nécessaire. Sur l'offre payante The World, il est possible de personnaliser ce dernier ainsi que le désactiver au besoin sur des environnements de développement comme ça semble être le cas pour vous ( https://kb.n0c.com/knowledge-base/a...ion-du-bastion-dapplication-web-waf-avec-n0c/ ).

Le POST qui est effectué est bien supérieur aux 1048576 bytes:

Code:
[Tue Nov 16 15:25:31.373683 2021] [:error] [pid 1516531:tid 140516045821696] [client X.X.X.X:55512] [client X.X.X.X] ModSecurity: Request body no files data length is larger than the configured limit (1048576).. Deny with code (413) [hostname "XXX.go.yo.fr"] [uri "/gestion.php"] [unique_id "YZO_Tz92cVZZnVGU3PaL2AAARQU"], referer: https://XXX.go.yo.fr/gestion.php
Voici le reste des infos:

Code:
[Tue Nov 16 15:29:41.806316 2021] [:error] [pid 1516531:tid 140516020643584] [client X.X.X.X:22752] [client X.X.X.X] ModSecurity: Access denied with code 403 (phase 2). Pattern match "(?:;|/|\\\\| )(?:\\\\b(?:cat|ls|perl|uname|pwd|cp|tclsh8?|cpp|f(?:etch|tp)|python|chown|rm|ping|rsync|rdiff-backup|scp|(?:w|ftp)get|curl|links|g\\\\+\\\\+|ch(?:grp|own)|passwd|r?(?:b|d)ash|t?c?sh|telnet|clang|nc)\\\\b |\\\\b(?:sleep|benchmark)\\\\b \\\\(? ?[0-9]|power ..." at ARGS:imgB.[line "445"] [id "340029"] [rev "35"] [msg "Atomicorp.com WAF Rules: Attack Blocked - command in REQUEST_URI or Argument"] [data "/nc "] [severity "CRITICAL"] [hostname "XXX.go.yo.fr"] [uri "/gestion.php"] [unique_id "YZPAST92cVZZnVGU3PaL_wAARgI"], referer: https://XXX.go.yo.fr/gestion.php
[Tue Nov 16 15:31:58.373884 2021] [:error] [pid 1498035:tid 140516087785216] [client X.X.X.X:39906] [client X.X.X.X] ModSecurity: Access denied with code 403 (phase 2). Pattern match "(?:;|/|\\\\| )(?:\\\\b(?:cat|ls|perl|uname|pwd|cp|tclsh8?|cpp|f(?:etch|tp)|python|chown|rm|ping|rsync|rdiff-backup|scp|(?:w|ftp)get|curl|links|g\\\\+\\\\+|ch(?:grp|own)|passwd|r?(?:b|d)ash|t?c?sh|telnet|clang|nc)\\\\b |\\\\b(?:sleep|benchmark)\\\\b \\\\(? ?[0-9]|power ..." at ARGS:imgB. [line "445"] [id "340029"] [rev "35"] [msg "Atomicorp.com WAF Rules: Attack Blocked - command in REQUEST_URI or Argument"] [data "/nc "] [severity "CRITICAL"] [hostname "XXX.go.yo.fr"] [uri "/gestion.php"] [unique_id "YZPA01DKOHGsIWwUqbKHxwABUgo"], referer: https://XXX.go.yo.fr/gestion.php
[Tue Nov 16 15:55:04.138637 2021] [:error] [pid 1556139:tid 140516012250880] [client X.X.X.X:17586] [client X.X.X.X] ModSecurity: Access denied with code 403 (phase 2). Pattern match "(?:;|/|\\\\| )(?:\\\\b(?:cat|ls|perl|uname|pwd|cp|tclsh8?|cpp|f(?:etch|tp)|python|chown|rm|ping|rsync|rdiff-backup|scp|(?:w|ftp)get|curl|links|g\\\\+\\\\+|ch(?:grp|own)|passwd|r?(?:b|d)ash|t?c?sh|telnet|clang|nc)\\\\b |\\\\b(?:sleep|benchmark)\\\\b \\\\(? ?[0-9]|power ..." at ARGS:imgB.  [line "445"] [id "340029"] [rev "35"] [msg "Atomicorp.com WAF Rules: Attack Blocked - command in REQUEST_URI or Argument"] [data "/nc "] [severity "CRITICAL"] [hostname "XXX.go.yo.fr"] [uri "/gestion.php"] [unique_id "YZPGOeUeaU7rr2fjVSa5TAAADwE"], referer: https://XXX.go.yo.fr/gestion.php
[Tue Nov 16 15:57:25.737951 2021] [:error] [pid 1555814:tid 140516003858176] [client X.X.X.X:33392] [client X.X.X.X] ModSecurity: Access denied with code 403 (phase 2). Pattern match "(?:;|/|\\\\| )(?:\\\\b(?:cat|ls|perl|uname|pwd|cp|tclsh8?|cpp|f(?:etch|tp)|python|chown|rm|ping|rsync|rdiff-backup|scp|(?:w|ftp)get|curl|links|g\\\\+\\\\+|ch(?:grp|own)|passwd|r?(?:b|d)ash|t?c?sh|telnet|clang|nc)\\\\b |\\\\b(?:sleep|benchmark)\\\\b \\\\(? ?[0-9]|power ..." at ARGS:imgB.  [line "445"] [id "340029"] [rev "35"] [msg "Atomicorp.com WAF Rules: Attack Blocked - command in REQUEST_URI or Argument"] [data "/nc "] [severity "CRITICAL"] [hostname "XXX.go.yo.fr"] [uri "/gestion.php"] [unique_id "YZPGyJg-0v2qKtSbF1ShVgABUQA"], referer: https://XXX.go.yo.fr/gestion.php
[Tue Nov 16 15:59:17.005673 2021] [:error] [pid 1555862:tid 140516003858176] [client X.X.X.X:46318] [client X.X.X.X] ModSecurity: Access denied with code 403 (phase 2). Pattern match "(?:;|/|\\\\| )(?:\\\\b(?:cat|ls|perl|uname|pwd|cp|tclsh8?|cpp|f(?:etch|tp)|python|chown|rm|ping|rsync|rdiff-backup|scp|(?:w|ftp)get|curl|links|g\\\\+\\\\+|ch(?:grp|own)|passwd|r?(?:b|d)ash|t?c?sh|telnet|clang|nc)\\\\b |\\\\b(?:sleep|benchmark)\\\\b \\\\(? ?[0-9]|power ..." at ARGS:imgB. [line "445"] [id "340029"] [rev "35"] [msg "Atomicorp.com WAF Rules: Attack Blocked - command in REQUEST_URI or Argument"] [data "/nc "] [severity "CRITICAL"] [hostname "XXX.go.yo.fr"] [uri "/gestion.php"] [unique_id "YZPHOC6rtVYPDdNUZVgtJAAATAA"], referer: https://XXX.go.yo.fr/gestion.php
[Tue Nov 16 16:01:55.519141 2021] [:error] [pid 1556139:tid 140516012250880] [client X.X.X.X:2596] [client X.X.X.X] ModSecurity: Request body no files data length is larger than the configured limit (1048576).. Deny with code (413) [hostname "XXX.go.yo.fr"] [uri "/gestion.php"] [unique_id "YZPH1-UeaU7rr2fjVSa5dwAAGAE"], referer: https://XXX.go.yo.fr/gestion.php
[Tue Nov 16 16:27:56.991329 2021] [:error] [pid 1555814:tid 140516003858176] [client X.X.X.X:62200] [client X.X.X.X] ModSecurity: Access denied with code 403 (phase 2). Pattern match "(?:;|/|\\\\| )(?:\\\\b(?:cat|ls|perl|uname|pwd|cp|tclsh8?|cpp|f(?:etch|tp)|python|chown|rm|ping|rsync|rdiff-backup|scp|(?:w|ftp)get|curl|links|g\\\\+\\\\+|ch(?:grp|own)|passwd|r?(?:b|d)ash|t?c?sh|telnet|clang|nc)\\\\b |\\\\b(?:sleep|benchmark)\\\\b \\\\(? ?[0-9]|power ..." at ARGS:imgB. [line "445"] [id "340029"] [rev "35"] [msg "Atomicorp.com WAF Rules: Attack Blocked - command in REQUEST_URI or Argument"] [data "/nc "] [severity "CRITICAL"] [hostname "XXX.go.yo.fr"] [uri "/gestion.php"] [unique_id "YZPN9pg-0v2qKtSbF1ShggABRAA"], referer: https://XXX.go.yo.fr/gestion.php
[Tue Nov 16 16:40:10.197795 2021] [:error] [pid 1555803:tid 140516012250880] [client X.X.X.X:24346] [client X.X.X.X] ModSecurity: Access denied with code 403 (phase 2). Pattern match "(?:;|/|\\\\| )(?:\\\\b(?:cat|ls|perl|uname|pwd|cp|tclsh8?|cpp|f(?:etch|tp)|python|chown|rm|ping|rsync|rdiff-backup|scp|(?:w|ftp)get|curl|links|g\\\\+\\\\+|ch(?:grp|own)|passwd|r?(?:b|d)ash|t?c?sh|telnet|clang|nc)\\\\b |\\\\b(?:sleep|benchmark)\\\\b \\\\(? ?[0-9]|power ..." at ARGS:imgB. [line "445"] [id "340029"] [rev "35"] [msg "Atomicorp.com WAF Rules: Attack Blocked - command in REQUEST_URI or Argument"] [data "/nc "] [severity "CRITICAL"] [hostname "XXX.go.yo.fr"] [uri "/gestion.php"] [unique_id "YZPQ07uF-xtY4V5HrGK8xAABFgE"], referer: [URL]https://XXX.go.yo.fr/gestion.php
 
Dernière édition:

Schonke

New Member
#17
Bonjour,
C'est bien ce que j'avais déduit : 413 pour le body transmis trop grand et 403 pour la valeur de la variable imgB trop grand.
Je comprends parfaitement que mod_security soit actif.
Merci.
 
Haut