OpenCart BlackList: Доработка механизма Чёрного списка

В OpenCart есть довольно полезный инструмент BlackList (Чёрный список). Правда он немного примитивен, но как минимум позволяет по IP-адресу выявить недобросовестного покупателя. Конечно список IP-адресов необходимо знать заранее, что не совсем удобно, поскольку современные мошенники редко используют одни и те же адреса. Однако некоторые не стесняются открыто заявлять о себе и рассчитывают, прежде всего, на невнимательность владельца магазина. Целью мошенников обычно является сам заказ, а точнее его сумма. Зная программные недоработки или уязвимости в OpenCart, они могут подменить стоимость покупки. В этой статье речь пойдёт о решении, которое можно использовать поверх стандартного Черного списка.

Для начала вспомним как работает BlackList. После того, как покупатель заполнил все необходимые формы, ему будет предложено подтвердить заказ. После нажатия соответствующей кнопки в интерфейсе магазина, в базе данных будет создан журнал истории заказа со статусом по умолчанию. Этот статус выставляется в настройках магазина через переменную config_order_status_id. Проверка в Черном списке как раз осуществляется на этапе создания журнала, однако как показала практика, она бесполезна - при обнаружении в Черном списке записи о покупателе, заказу присваивается тот же статус, по умолчанию. Т.е. владелец магазина не сможет определить по статусу заказа его фиктивность. Возможно разработчики OpenCart недоработали этот механизм или он реализован в коммерческих версиях, в любом случае, будем это исправлять.

На примере переменной config_order_status_id в файлах ./admin/controller/setting/setting.php и ./admin/view/template/setting/setting.tpl создадим аналогичную переменную, например config_blocked_order_status_id. Далее в файле ./catalog/model/checkout/order.php находим следующий код:

if ($status) {
  $order_status_id = $this->config->get(' config_order_status_id ');
}


и заменяем его на код ниже:

if ($status) {
  $order_status_id = $this->config->get('config_blocked_order_status_id');
}


В настройках магазина определим новый статус для подозрительных заказов, например Блокирован. Теперь владелец магазина или менеджер будут видеть статус у заказа, если IP-адрес покупателя находится в стоплисте. На основе этой информации можно отказать в заказе или провести тщательную проверку заказа и самого покупателя.

Собственно мы на этом не остановились и решили продолжить доработку Черного списка. В частности, в расширенной версии можно указывать не только IP-адреса, но и имена хостов, причём как для IP, так и для хоста допустимо указывать их части, т.е. будет сравнение по частям строк. Это позволяет "подозревать" целые подсети и страны по TLD (домен верхнего уровня). В поле IP можно также указывать и адрес в формате CIDR:

Теги:
BLACKLIST, CIDR, IP, ДОРАБОТКА, СТАТУС ЗАКАЗА, СТОПЛИСТ, ЧЕРНЫЙ СПИСОК
Добавлено: 26 Февраля 2015 07:02:40 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...