Архив

Защита админки OpenCart 3

Ранее уже был пост, как защитить админку в OpenCart 1.5 и 2 версий.

Теперь расскажу, как это сделать в 3-й версии, т.к там вывод идет через Twig. И в него нельзя вставить php код. Для защиты OpenCart 3 нужно редактировать контроллер /admin/controller/common/login.php, а не файл шаблона.

Коротко напомню, в сем суть.

Суть метода, в том, что просто по пути http://site.com/admin Вам выдаст 404 ошибку, а для входа нужно будете открыть страницу админки с определенным ключевым полем, которое будет передаваться в виде параметра ссылки. Итак, приступим.

  1. Делаем бекап файла /admin/controller/common/login.php
  2. Меняем начало файла, чтобы получилось:
<?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/controller/common/login.php

}

Теперь, чтобы зайти в админку нужно открыть сайт по ссылке
http://site.com/admin?secretkey=secretkeyvalue

Если не указывать — то выдаст 404 ошибку.

P.S также можете сделать, чтобы открывалась 404 страница Вашего шаблона (спасибо Роману за комментарий). Для этого замените:

header("HTTP/1.0 404 Not Found");

на

header( 'Refresh: 0; url=/index.php?route=error/not_found' );

Вы можете изменить ключ доступа, заменив «secretkeyvalue» на свое значение. Также Вы можете и изменить сам параметр, аналогично заменив «secretkey» на свое значение, но это далеко не обязательно, хватит и «secretkeyvalue».

Нужна доработка или готовое решение?

Опишите задачу — отвечу в течение дня и назову сроки и стоимость.

Комментарии: 0

  1. Уведомление: Защита админки OpenCart
  2. Сорян Бро, возможно забыл добавить к тексту в конце // ?php } // так как без этого не будет работать в 3 опене

  3. Здравствуйте, был бы признателен, если бы вы более подробно указали где именно и что именно менять (какое начало файла заменить).
    Вставить между:
    <?php
    .и…..
    class ControllerCommonLogin extends Controller { ?

    Спасибо

    1. В статье все написано, вставляете в начало файла, ничего заменять не нужно

      1. ниче не понятно!
        Я в самое начало вставляю что указано между <?php и ?>, далее оставляю старый код файла.
        куда девать старое <?php ?
        Нужна ли закрывающая в конце фигурка? Суда по указанному — нужна.
        Ты мог бы не говорить что написано в статье. Это читали и коли спрашивают — значит непонятно!

        1. Если вы правите код, то должно быть минимальное понятие как устроен PHP.

          >> куда девать старое

          >>Нужна ли закрывающая в конце фигурка?
          Да, нужна, это окончание условия

Оставить комментарий