#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.