Безопасность — это важная часть любого сайта. Особенно трепетно нужно относится к административной части сайта, т.е админке. Можно конечно поставить дополнение для этих целей, но порой простые решения не менее эффективны.
Сегодня я расскажу про один простой способ защитить вход в админ панель OpenCart. Проверялось решение на 2й версии, но думаю подойдёт и для 1.5 версий и ранее. Для 3й версии используйте инструкцию в другом материале.
Суть метода, в том, что просто по пути http://site.com/admin Вам выдаст 404 ошибку, а для входа нужно будете открыть страницу админки с определенным ключевым полем, которое будет передаваться в виде параметра ссылки. Итак, приступим.
- Делаем бекап файла /admin/view/template/common/login.tpl
- Меняем начало файла, чтобы получилось:
<?php if (isset($_GET['secretkey'])) { $seckey = $_GET['secretkey']; setcookie ("secretkey", $_GET['secretkey']); } else if (isset($_COOKIE['secretkey'])) { $seckey = $_COOKIE['secretkey']; } else { $seckey = ''; } if ($seckey != 'secretkeyvalue') { header("HTTP/1.0 404 Not Found"); exit; } else { ?> //содержимое /admin/view/template/common/login.tpl <?php } ?>
Далее сохраняем файл и проверяем работу. Теперь, чтобы зайти в админку нужно открыть сайт по ссылке
http://site.com/admin?secretkey=secretkeyvalue
Если не указывать - то выдаст 404 ошибку.
Вы можете изменить ключ доступа, заменив "secretkeyvalue" на свое значение. Также Вы можете и изменить сам параметр, аналогично заменив "secretkey" на свое значение, но это далеко не обязательно, хватит и "secretkeyvalue".
P.S аналогично можно закрыть и любой PHP файл, не обязательно связанный с OpenCart. Моете закрыть админку WordPress, или просто закрыть весь фронтэнд сайта. Т.е этот метод универсальный и очень простой.
P.P.S код написан не мной, на авторство не претендую. Код нашел на форуме Опенкарта. Работу кода проверил не раз в своей работе, все работает на 100%.
Добрый день !
Настроил на Opencart 3
путь немного другой:
/admin/controller/common/login.php
также немного внес коррективы и поставил:
header( 'Refresh: 0; url=/index.php?route=error/not_found' );
вместо "некрасивого" 404 - получаем ошибку "404" но уже с сайта которая стилизована под шаблон
У меня не работает так почему то на 3, при заходе в админку белый экран(
Я с Opencart 3 еще особо не работал. Можете прикрепить код в коментарии, я добавлю его в пост.
Фраза: Для 3й версии путь тотже, файл login.twig, но нужно будет переделать на twig.
- Как понять - "но нужно будет переделать на twig?"
можно поконкретнее, не могу настроить на 3 версии
Буду очень благодарен!
Скоро сделаю пост, как сделать на 3-й версии.
Версия для 3й версии https://bestweb4u.net/zashhita-adminki-opencart-3/