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

#php #textbox #text-size #large-data

#php #текстовое поле #размер текста #большие данные

Вопрос:

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

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

Ответ №1:

Отредактируйте 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.

Комментарии:

1. Ах да, файл PHP.ini. В нем должна быть такая информация :). Дополнительно отметим, что сервер фактически отклонит запрос до того, как начнет получать большой объем текста, верно?

Ответ №2:

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

Комментарии:

1. Спасибо за публикацию ссылки. Этот проект будет полезен для решения этой проблемы и других требований безопасности.

Ответ №3:

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