Пользователь пытался сформировать заказ. Пришло сообщение на e-mail:
Форма авторизации на странице оформления заказа не передала на сервер параметр «form_key».
Причиной дефекта формы может быть несовместимость используемой магазином оформительский темы, а также нестандартные правки в ней, сторонние модули, либо некий сбой в Российской сборке Magento.
Разработчик уже оповещён о проблеме.
Как устранить сбой «Форма авторизации на странице оформления заказа не передала на сервер параметр «form_key»»
06.05.2015 06:52
Причиной невозможности покупателей авторизации в магазине из-за отсутствия в формах авторизации параметра «form_key» является несовместимость используемой магазином оформительский темы с используемой магазином версией Magento Community Edition.
Magento Community Edition, начиная с версии 1.8.1, при авторизации покупателей в магазине проверяет значение параметра «form_key».
Это делается с целью предотвращения несанкционированного доступа злоумышленников к учётной записи покупателей посредством атак типа Межсайтовая подделка запроса (Cross-site request forgery).
Типичный пример: когда злоумышленник присылает клиенту магазина ссылку, клиент переходит по ней, и таким образом злоумышленник от лица клиента и под его учётной записью что-то делает в интернет-магазине.
Может показаться, что злоумышленник с авторизационными правами клиента много сделать не может, однако некоторые установленные в магазине модули могут позволять клиентам делать многое (в частности, даже стандартная функциональность Magento позволяет клиенту привязывать к своей учётной записи счёт PayPal) и особенно такой метод атаки может быть полезен как часть более общей атаки, например, с использованием социальной инженерии: например, злоумышленник от лица покупателя делает заказ и в комментарии к заказу присылает какую-нибудь нехорошую ссылку неопытному менеджеру магазина, т.е. направляя атаку уже на взлом всего магазина.
В Magento Community Edition версий ниже 1.8.1 была такая уязвимость была устранена: к формам авторизации клиентов был добавлен параметр «form_key», который устраняет возможность описанных выше атак.
Однако если владелец интернет-магазина использует стороннюю оформительскую тему, выпущенную для более ранних версий Magento Community Edition (или устаревшую версию современной оформительской темы), то там параметра «form_key» не будет, и, соответственно, покупатели вообще не смогут авторизоваться в интернет-магазине.
Сама Magento Community Edition подобную проблему не решает никак. Она просто молча не даёт покупателям авторизоваться, попасть в свой личный кабинет, сделать заказ от лица ранее созданной учётной записи.
Российская сборка Magento идёт дальше: она сначала пытается устранить эту проблему самостоятельно: пытается добавить к формам авторизации параметр «form_key». Если структура сторонней оформительской темы совсем уж нестандартная, и в автоматическом режиме параметр «form_key» добавить нельзя, то Российская сборка Magento немедленно оповещает об этом администратора магазина сообщением, указанным в заголовке данной темы: Форма авторизации на странице оформления заказа не передала на сервер параметр «form_key».
При получении администратором магазина такого сообщения администратору надо починить свою оформительскую тему: либо добавить параметр «form_key» к шаблонам оформительской темы вручную, либо обновить оформительскую тему до новой версии.
Чтобы починить оформительскую тему самостоятельно, надо:
После правок надо удалить кэш.
Magento Community Edition, начиная с версии 1.8.1, при авторизации покупателей в магазине проверяет значение параметра «form_key».
Это делается с целью предотвращения несанкционированного доступа злоумышленников к учётной записи покупателей посредством атак типа Межсайтовая подделка запроса (Cross-site request forgery).
Типичный пример: когда злоумышленник присылает клиенту магазина ссылку, клиент переходит по ней, и таким образом злоумышленник от лица клиента и под его учётной записью что-то делает в интернет-магазине.
Может показаться, что злоумышленник с авторизационными правами клиента много сделать не может, однако некоторые установленные в магазине модули могут позволять клиентам делать многое (в частности, даже стандартная функциональность Magento позволяет клиенту привязывать к своей учётной записи счёт PayPal) и особенно такой метод атаки может быть полезен как часть более общей атаки, например, с использованием социальной инженерии: например, злоумышленник от лица покупателя делает заказ и в комментарии к заказу присылает какую-нибудь нехорошую ссылку неопытному менеджеру магазина, т.е. направляя атаку уже на взлом всего магазина.
В Magento Community Edition версий ниже 1.8.1 была такая уязвимость была устранена: к формам авторизации клиентов был добавлен параметр «form_key», который устраняет возможность описанных выше атак.
Однако если владелец интернет-магазина использует стороннюю оформительскую тему, выпущенную для более ранних версий Magento Community Edition (или устаревшую версию современной оформительской темы), то там параметра «form_key» не будет, и, соответственно, покупатели вообще не смогут авторизоваться в интернет-магазине.
Сама Magento Community Edition подобную проблему не решает никак. Она просто молча не даёт покупателям авторизоваться, попасть в свой личный кабинет, сделать заказ от лица ранее созданной учётной записи.
Российская сборка Magento идёт дальше: она сначала пытается устранить эту проблему самостоятельно: пытается добавить к формам авторизации параметр «form_key». Если структура сторонней оформительской темы совсем уж нестандартная, и в автоматическом режиме параметр «form_key» добавить нельзя, то Российская сборка Magento немедленно оповещает об этом администратора магазина сообщением, указанным в заголовке данной темы: Форма авторизации на странице оформления заказа не передала на сервер параметр «form_key».
При получении администратором магазина такого сообщения администратору надо починить свою оформительскую тему: либо добавить параметр «form_key» к шаблонам оформительской темы вручную, либо обновить оформительскую тему до новой версии.
Чтобы починить оформительскую тему самостоятельно, надо:
- Найти в своей оформительской теме следующие файлы:
template/customer/form/login.phtml
template/persistent/customer/form/login.phtml
Обратите внимание, что указанные файлы должны относиться именно к используемой магазинов оформительской теме.
В интернет-магазине наверняка будут одноимённые файлы других (в частности, стандартных) оформительских тем.
Отличить требующие правки файлы можно по предшествующему файловому пути: он должен соответствовать папке оформительской темы.
Про файловые пути оформительской темы можно узнать из моей статьи Как и зачем настраивать файловые пути оформительской темы? - В указанных файлах нужно найти форму авторизации (тег HTML form) и внутрь его добавить новое скрытое поле (тег HTML input):
<input type="hidden" name="form_key" value="<?php echo Mage::getSingleton('core/session')->getFormKey(); ?>" />
После правок надо удалить кэш.
05.12.2015 01:42
Для Российской сборки версии 2.48.5 я придумал новый алгоритм автоматического исправления сторонних оформительских тем, которые были разработаны для Magento Community Edition версий ниже 1.8.1 и у которых система авторизации покупателей работает по-старому, что приводит к её сбою в свежих версиях Magento Community Edition.
Так вот, теперь Российская сборка Magento намного эффективнее автоматически исправляет работу таких устаревших оформительских тем.
Так вот, теперь Российская сборка Magento намного эффективнее автоматически исправляет работу таких устаревших оформительских тем.
17.02.2017 04:26
Если Вы используете устаревшую версию Российской сборки (ранее 2.48.5), либо если не используете Российскую сборку Magento вообще, то можете попытаться устранить проблему вручную по инструкции: Как починить форму регистрации после установки заплаток SUPEE?
Вообще, Magento 1.x сейчас быстро устаревает, так что без обновлений всё будет постепенно ломаться.
Вообще, Magento 1.x сейчас быстро устаревает, так что без обновлений всё будет постепенно ломаться.