OcStore (Opencart) — защищаем админку от взлома

Видел сотню различных методов как это сделать, вплоть до «переименуйте файл admin.php в любой другой и закройте его от индексации в robots.txt» — прям как спрятать ключ от дома под ковриком и оставить в двери записку «Мама, ключ под ковриком».

Решил все-таки поделиться своим методом защиты от брута (а.к.а перебор) да и вообще спрятать подальше админку — зачем лишний раз провоцировать 🙂

Итак, приступим:

Открываем файл /admin/view/template/common/login.tpl

В самый верх файла (над строчкой <?php echo $header; ?>) вставляем такой код, предварительно заменив слова secretkey и secretkeyvalue на свои уникальные, например access и denied (пробелы, если есть, заменяем на подчеркивания или дефисы):

В самый конец файла, примерно после строки <?php echo $footer; ?> добавляем:

Сохраняем…

Все, теперь не зная связки из этих двух слов злоумышленники не смогут обнаружить админку и соответственно приступить к перебору паролей. Кстати, если вы сами забудете эту связку то тоже не сможете войти на сайт, так что запомните ее.

Теперь, чтобы попасть на страницу авторизации в админ-часть, необходимо в поле адреса указать www.вашсайт.com/admin?secretkey=secretkeyvalue (где вместо secretkey и secretkeyvalue ваши значения, которые вы указали в файле login.tpl)

Можно пойти дальше и запретить индексацию админки поисковиками…

Для этого открываем файл header.tpl, который лежит в той же папке, что и login.tpl (/admin/view/template/common/) и в любом месте между тегами <head></head> вставляем строчку:

Сохраняем. Теперь проверьте файл в корне сайта robots.txt на наличие там записей вида:

Disallow: /admin и удаляем ее.  Или если есть время, можете навести злоумышленников на ложный след — заменяем (Disallow: /admin на Disallow: /administrator.php) В корень сайта кладем php-документ administrator.php, в котором будет муляжная форма ввода логина и пароля, которая при любых значениях возвращает ошибку «Неправильная пара логин/пароль»

Запись опубликована в рубрике Эх - прет! с метками , , , . Добавьте в закладки постоянную ссылку.

12345 (5 votes, average: 5,00 out of 5)

26 комментариев: OcStore (Opencart) — защищаем админку от взлома

  1. Bayan говорит:

    Сделала как вы написали, при вводе www. мойсайт.com/admin?secretkey=secretkeyvalue выдает Parse error: syntax error, unexpected $end in http:/мойсайт.com/admin/view/template/common/login.tpl on line 63

    Версия ocStore-1.5.5.1.1 Где ошибка?

    • Владислав.kz говорит:

      Среди спама не увидел ваш комментарий =) Возможно где-то что-то пропустили, чтобы разобраться нужно видеть весь код. PHP ругается на переменную $end на 63 строке, возможно перед ней пропустили скобки, точку с запятой или наоборот поставили лишние. Надеюсь, на момент ответа вы разобрались с проблемой =)

  2. Игорь говорит:

    Но, в тоже самое время, проделав эти все манипуляции и потом один раз найдя админку по новому пути. Это информация сохраняется на компьютере и я потом могу находить админку по обычному пути http://www.вашсайт.com/admin/. Я правильно понял. У меня по крайней мере так все стало работать.

    • Владислав.kz говорит:

      Все верно. Пока не затрутся куки у браузера вы можете заходить по обычному пути. Можно ограничить время хранения куков, если хотите. Если заходите на сайт с посторонних устройств, рекомендую удалять историю и чистить куки.

  3. -) говорит:

    при включении .htaccess не работает

    • Владислав.kz говорит:

      Возможно, файл .htaccess у вас неправильно настроен т.к. предложенный выше код не затрагивает другие файлы. Единственное — на некоторых хостингах может не работать 404 редирект

  4. Илья говорит:

    Всё сделал, как вы сказали. Метод- супер! Теперь не надо мучаться с переименовыванием папки админки, и испытывать из-за этого большие неудобства при установке модулей. Это пожалуй, лучший метод, что я видел- спасибо огромное за то, что поделились им!

  5. Дмитрий говорит:

    Привет, syntax error пишет на последнем Opencart. В чём может быть проблема?

    • Владислав.kz говорит:

      Привет. Можете подробнее описать на какую строчку ругается и на какой версии вы пытались ставить, будем разбираться =)

  6. Астерия говорит:

    А что за муляжная форма админки? Файл administrator.php создан, а в нём что писать? Или пустым так и оставить?

    • Владислав.kz говорит:

      Скопировать HTML-код стандартной админки, изменив обработку формы так, чтобы при любом вводе логина/пароля выдавало ошибку. Будет время — выложу пример

      • Серёга говорит:

        Здравствуйте. Спасибо за подсказки. Изменил обработку формы, в браузере пишет ошибку 500. Подскажите что не так?

  7. Евгений говорит:

    На ocStore 1.5.5.1 работает вроде бы нормально.
    Только надо еще не забыть поставить на файл /admin/view/template/common/login.tpl права доступа 640.
    Иначе его любой скачает без проблем.

  8. Tim говорит:

    А чем плох
    Order Deny,Allow
    Deny from all
    Allow from …
    etc
    в .htaccess?

    • Владислав.kz говорит:

      То есть вы предлагаете ограничить доступ по IP? А если появится необходимость войти в админку с чужого компьютера? Да и IP обычно динамический.

  9. Павел говорит:

    Выложите пожалуйста код левой админки 🙂

  10. Кирилл говорит:

    Спасибо. Годненько.
    У меня, правда, что-то сглючивает,просто показывает пустую страницу, попозже допилю.

    Как Вам вариант сообщать не 404 — а мовед перманент и посылать на вообще другой сайт (есть достаточно интересные странички по запросу в поисковик «иди на __й»)

    • Владислав.kz говорит:

      Это связано с обновлением PHP. Header 404 not found больше не срабатывает как раньше. Задача стояла спрятать админку, чтобы злоумышленник не знал ее точного расположения. Переименовали ее или просто спрятали. При этом выводить стандартную страницу «Not found» будто такого адреса не существует. Можно пересылать/посылать куда угодно — это уже на Ваше усмотрение =)

  11. сергей говорит:

    При попытке отправить из браузера http://www.вашсайт.com/admin?secretkey=secretkeyvalue, строчка автоматически преобразуется к виду http://www.вашсайт.com/admin/?secretkey=secretkeyvalue — добавляется слэш после admin. На этом всё… Войти не могу. Где ошибка затаилась? Установлен vQmod, но он не должен влиять вроде бы…

  12. Igor говорит:

    Спасибо, все работает отлично. Только вместо — header (HTTP/1.0 404 Not Found) решил прописать — echo div style=»width: 90%; margin: 0 auto; color: #f00; font-size: 80px; text-align: center; Access Denied! /div

  13. Андрей говорит:

    Спасибо большое за за статью…
    Много перебрал информации на тему как можно спрятать админку для обычного php сайта.
    Так и не чего не смог найти. В основном приводят примеры только для популярных CMS а для обычных сайтов нет не чего… В общем ваш метод помог, спасибо большое.

  14. Игорь говорит:

    Владислав, большое спасибо за интересное решение. На локальном сервере трудится прекрасно, но после переноса на хостинг возникает такая же ситуация, как и у Сергея:

    > При попытке отправить из браузера http://www.вашсайт.com/admin?secretkey=secretkeyvalue, строчка автоматически преобразуется к виду http://www.вашсайт.com/admin/?secretkey=secretkeyvalue – добавляется слэш после admin. На этом всё… >

    В чем может быть проблема ?

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *