Использование PHP для ограничения длины текста, который может быть отправлен на сервер

Я знаю, как сделать это в пользовательской форме, используя HTML. Однако злоумышленники могут пропустить эту форму, чтобы вызвать страницу действий сервера и отправить ненормально большой размер текста.

Есть ли вообще отказывать в таких запросах с сервера. Возможно, существует механизм, с помощью которого мы можем заранее определить размер данных POST, поступающих до их фактического поступления, аналогично загрузке огромных файлов.

3 ответа

Решение

Изменить php.ini файл и установите максимальный размер сообщения на число в мегабайтах, которое вы хотите разрешить. Имейте в виду, что вам нужно достаточно высоко для длинных постов в блоге, а что нет.

post_max_size = 4M

Другие настройки, которые вы должны проверить

; 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

Если вы используете Apache или Nginx, вы также можете установить максимальный размер запроса в конфигурации сервера, чтобы они могли блокировать запрос еще до того, как он достигнет php.

Вы можете использовать Suhosin. Это система защиты для PHP. А среди настроек можно запретить запросы определенной длины.

К тому времени, когда PHP обрабатывает данные POST, уже немного поздно. Это лучше достигается на уровне веб-сервера. Если вы используете Apache, ознакомьтесь с директивой LimitRequestBody.

Другие вопросы по тегам