Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Opencart и php_value max_input_vars 40000 - Безопасно?


OldAine

Recommended Posts

Всем привет, есть небольшой вопрос.

 

Имеется сайт на ocstore 15512, по коду нестандартный.

Возникла проблема при добавление большого количества опций товару.

Короче, при сохранение, появлялись ошибки в журнале и товар сохранялся частично, пропадала информация.

 

Стал искать решение, наткнулся на десяток тем, где советовали увеличить значение php_value max_input_vars в корне в файле .htaccess и в папке admin в файле php.ini

 

 

Проверил характеристики моего стандартного хостинга от reg.ru - по умолчанию, стоит значение max_input_vars = 1000

У меня же уже было прописано 5000, но т.к. этого оказалось мало, то я стал ставить и 10000 и 15000 и 25000 и т.д. - но это не помогало.

В общем, опытным путём, удалось выявил, что нужно php_value max_input_vars 40000

 

  1. Кто может объяснить почему именно 40000? Ведь инпутов в запросе не больше 200 (на всю страницу)! То есть по идее должно было бы хватить и стандартного ограничение от хостера на 1000 запросов.  Или это как-то по другому посчитывается?
  2. И второй вопрос - насколько безопасно оставлять такое значение? Прочитал, что могут атак с использованием хеш-коллизий (я в этом не секу).

 

 

Полезные ссылки по теме:

  1. https://www.reg.ru/support/hosting-i-servery/hosting-sajtov/yazyki-programmirovaniya-i-skripty/kak-izmenit-max-input-vars
  2. http://jbzoo.ru/docs/max-input-vars
  3. https://opencartforum.com/topic/19175-resheno-max_input_vars-ne-mogu-dobavit-znachenie-opcii/
  4. https://opencartforum.com/topic/42551-resheno-phpmax_input_vars-oshibki-pri-sohranenii-tovara/
Надіслати
Поділитися на інших сайтах

1 час назад, OldAine сказал:

появлялись ошибки в журнале

А ошибки какие? Вы уверены, что это связано именно с max_input_vars?

В любом случае для этого параметра нет "безопасного" или "небезопасного" значения. Если работает со значением 40000 - ок.

Надіслати
Поділитися на інших сайтах


2 минуты назад, destreser сказал:

А ошибки какие?

Такого типа: (это не мои, свои я уже удалил...)

PHP Notice:  Undefined index: option_value_description in /home/admin/controller/catalog/option.php on line 440
PHP Warning:  Invalid argument supplied for foreach() in /home/admin/controller/catalog/option.php on line 440
PHP Notice:  Undefined index: image in /home/admin/model/catalog/option.php on line 40
PHP Notice:  Undefined index: sort_order in /home/admin/model/catalog/option.php on line 40
PHP Notice:  Undefined index: option_value_description in /home/admin/model/catalog/option.php on line 47
PHP Warning:  Invalid argument supplied for foreach() in /home/admin/model/catalog/option.php on line 47

 

 

3 минуты назад, destreser сказал:

Вы уверены, что это связано именно с max_input_vars?

Ну проблема решилась, как только я поставил max_input_vars 40000, так что да, уверен на 99.9 процента) + Я тестировал.

 

 

4 минуты назад, destreser сказал:

А ошибки какие? Вы уверены, что это связано именно с max_input_vars?

В любом случае для этого параметра нет "безопасного" или "небезопасного" значения. Если работает со значением 40000 - ок.

Спорить не буду, я в этом не понимаю ничего. Просто цитаты с других сайтов:

Цитата

Параметр PHP max_input_vars позволяет защитить PHP-приложение от атак типа "отказ в обслуживании" (DoS).

Данный параметр отвечает за максимальное число переменных, которые могут "придти" на сервер от пользователя сайта.

Цитата

Чтобы защититься от DoS-атаки, вызванной уязвимостью в работе с предсказуемыми коллизиями, в версии языка 5.3.9, при написании алгоритма была реализована директива max_input_vars, которая позволяет уменьшить число входящих параметров для HTTP-запросов. Алгоритм данной директивы был реализован с ошибкой, сделавшей возможным проведение атаки, опасность которой велика.

Цитата

max_input_vars — это количество входных переменных, которые могут быть приняты в одном запросе (ограничение накладывается на каждую из глобальных переменных $_GET$_POSTи $_COOKIE отдельно).

Использование этой директивы снижает вероятность сбоев в случае атак с использованием хеш-коллизий. Если входных переменных больше, чем задано директивой, выбрасывается предупреждение E_WARNING, и все последующие переменные в запросе игнорируются. Это ограничение применяется к каждому уровню вложенности входного многомерного массива.

 

8 минут назад, destreser сказал:

Если работает со значением 40000 - ок.

Надеюсь, что это так)

Надіслати
Поділитися на інших сайтах

8 минут назад, freelancer сказал:

узнать сколько инпутов


$(":input").length

 

Не знаю то ли я сделал. Открыл product.tpl и вставил это в <script>

 

 

Вот что увидел в отладчике (это карточка самого нагруженного товара):

GjFywdZ.png

Надіслати
Поділитися на інших сайтах

1 час назад, AlexDW сказал:

вообще, есть такое

Спасибо, интересный модуль.

 

1 час назад, freelancer сказал:

что например?

я так понял, что  AlexDW имел ввиду, что учитывается не только общее количество input, а ещё и кол-во символов которое дозволено вводить в форму инпута.

 

Если это так, то понятно почему мне нужно указывать значение 40000, ведь у меня там и текстовая информация (красткое описание) и картинки и всё это у каждой опции, которых может быть 200+ штук

Надіслати
Поділитися на інших сайтах

@freelancer , тупанул, начал отдельно считать всякие селекты и чекбоксы :ugeek:

 

51 минуту назад, OldAine сказал:

учитывается не только общее количество input, а ещё и кол-во символов которое дозволено вводить в форму инпута

нет, max_input_vars считает только кол-во input, размер самого запроса post_max_size

Надіслати
Поділитися на інших сайтах

 $(":input")  - не совсем так

в  $(":input")  попадают также button

 

$('[name]:input') - так будет точнее

  • +1 1
Надіслати
Поділитися на інших сайтах

@freelancer

Я к тому  что если input не имеет name, то он не сериализуется для запросов.

button - элемент формы, если он имеет name, то оно попадет в параметры запроса

<button name="send" type="submit">Отправить</button>

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.