О защите и безопасности разных CMS в том числе Opencart написано много, но хотелось бы добавить и свои пять копеек. чтобы понять как защитить свой Opencart, нужно знать как его ломают и его основные дыры.
В первую очередь почитаем, что по этому поводу есть на разных форумах по взлому. Первая же статья дает направление к действию https://rdot.org/forum/showthread.php?t=3247 и исходник уязвимости http://www.bot24.com/2014/04/opencart-1563-upload-shell-vulnerability.html
Объясню, как можно залить шелл (фактически файловый менеджер для работы с хостингом, некоторые также позволяют выполнять различные скрипты). Для использования данной уязвимости необходимо выполнение нескольких условий — 1) доступ в админку сайта, 2)уязвимость файла ошибок.
Предположим, что доступ в админку сайта открыт, как же ведет себя злоумышленник?
Первое, что проверяется доступность файла ошибок из броузера. Просто наберите в командной строке http://ваш_сайт/system/logs/error.txt, если открывается ваш журнал ошибок, то данный сайт уязвим.
Далее в админке можно задать произвольное имя файла лога ошибок (System -> Settings -> Edit Your Store -> Server Tab and at «Error Log Filename»), например
после этого достаточно произвести восстановление базы опенкарт из файла, заведомо содержащего наш код шелла. Естественно восстановить базу данных так не получится и данные из файла благополучно перекочуют в журнал ошибок, где будут доступны для вызова.
Таким образом, для невозможности осуществления такого взлома необходимо выполнить следующее. Во-первых, паролю администратора выставить сложный пароль, во-вторых, запретить вызов файла лога ошибок из броузера, ну и напоследок обезопасить вход в админку, чтобы он был не как у стандартного Opencart а какой-либо иной.
Разберемся с файлом ошибок. Для того, чтобы невозможно было из броузера увидеть файл журнала ошибок можно воспользоваться тремя способами. Первое — отключить журнал ошибок из Система -> Настройки -> Редактировать магазин -> Вкладка «Сервер» -> Записывать ошибки: выставить — нет. Но мне кажется, что это не лучший вариант, так как при разработке логи все таки нужны. Второй вариант переименовать файл журнала ошибок, например, в abrakadabra.txt, при этом если злоумышленник методом перебора будет собирать сайты Opencart для взлома ваш сайт точно в него не попадет. Ну и третий вариант вообще запретить доступ к данному файлу из броузеров.
Для этого в папку http://сайт/system/logs/ можно добавить файл .htaccess следующего содержания: (сохраняем в кодировке ANSI):
<FilesMatch "error.(txt)$"> Order Allow,Deny Deny from all </FilesMatch>
Также в папку download закинуть файл .htaccess с содержанием:
Order allow,deny Deny from all # Prevent Directoy listing Options All -Indexes
Также не забываем отключать отображение ошибок на сайте.
Совместив второй и третий варианты получаем довольно безопасное решение. Но оно работает только в случае если злоумышленник не имеет доступа к административной панели. Поэтому производим два стандартных действия по настройке безопасности доступа к админке — переименовываем пользователя «admin» (Система — Пользователи — Изменить — Логин) и назначаем сложный пароль (здесь уже стандартные настройки — пароль от 8 символов, использовать большие и маленькие буквы и символы типа !,»,№,;,%,:,?).
После данных действий выставляем права на папки файлы, для файлов config.php выставим 400, 755 на папки, 644 на остальные файлы.
Ну и последнее что можно сделать — это переименовать вход в админку. Советую это делать уже после того, как установите все модули Вашего магазина. Изменение входа в админку производится в два действия — переименовывается папка admin и вносятся соответствующие изменения в файл из папки /admin/config.php
Кстати забыл сказать, никогда не оставляйте папку install после установки — это также огромная дыра в безопасности.
Конечно, это не весть список мер для безопасности интернет-магазина, но для базовой настройки этого вполне достаточно.