Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

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


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/
Link to comment
Share on other sites

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

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

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

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

Link to comment
Share on other sites


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 - ок.

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

Link to comment
Share on other sites

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

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

$(":input").length

 

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

 

 

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

GjFywdZ.png

Link to comment
Share on other sites

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

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

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

 

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

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

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

 

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

Link to comment
Share on other sites

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

 

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

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

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

Link to comment
Share on other sites

@freelancer

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

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

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

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.