2011-05-01 3 views
1

Je sais comment faire cela sur un formulaire utilisateur en HTML. Cependant, les utilisateurs malveillants peuvent passer ce formulaire pour appeler la page d'action du serveur et envoyer du texte de taille anormalement grande.Utilisation de PHP pour limiter la longueur du texte pouvant être envoyé au serveur

Y a-t-il moyen de refuser de telles demandes au serveur? Peut-être, il existe un mécanisme par lequel nous pouvons réaliser à l'avance la taille des données POST qui arrivent avant leur arrivée, similaire au téléchargement de fichiers volumineux.

Répondre

2

Modifiez le fichier php.ini et définissez la taille maximale de la publication sur le nombre de mégaoctets que vous souhaitez autoriser. Gardez à l'esprit que vous en avez besoin assez élevé pour de longs messages de blog et quoi d'autre.

post_max_size = 4M 

D'autres paramètres que vous devez vérifier sont

; Maximum execution time of each script, in seconds 
; http://php.net/max-execution-time 
; Note: This directive is hardcoded to 0 for the CLI SAPI 
max_execution_time = 30 

; Maximum amount of time each script may spend parsing request data. It's a good 
; idea to limit this time on productions servers in order to eliminate unexpectedly 
; long running scripts. 
; Note: This directive is hardcoded to -1 for the CLI SAPI 
; Default Value: -1 (Unlimited) 
; Development Value: 60 (60 seconds) 
; Production Value: 60 (60 seconds) 
; http://php.net/max-input-time 
max_input_time = 60 

; Maximum amount of memory a script may consume (128MB) 
; http://php.net/memory-limit 
memory_limit = 30MB 

Si vous utilisez Apache ou Nginx, vous pouvez également définir la taille de la requête max dans la configuration du serveur afin qu'ils puissent bloquer la demande avant même atteint php.

+0

Oh oui, le fichier PHP.ini. Il doit avoir de telles informations :). Sur une note supplémentaire, le serveur va effectivement refuser la demande avant de commencer à recevoir la grande quantité de texte, non? –

1

Vous pouvez utiliser Suhosin. C'est un système de protection pour PHP. Et parmi les paramètres, vous pouvez interdire les demandes sur une certaine longueur.

+0

Merci d'avoir posté ce lien. Ce projet sera utile pour ce problème et d'autres exigences de sécurité. –

0

Au moment où PHP traite les données POST, il est un peu tard. Cela est mieux accompli au niveau du serveur Web. Si vous utilisez Apache, consultez la directive LimitRequestBody.

Questions connexes