OpenCart — как защитить интернет-магазин от взлома


Вам могут понравиться и эти статьи...

Комментариев: 63

Если Вы хотите добавить код в свой комментарий, заключите его в теги <pre lang="php"></pre>

  1. Очень полезный материал, спасибо.

    Добавлю, что при смене папки admin на новую, надо в файле robots.txt также заменить все вхождения admin на новые в строках с Disallow.

    Иначе админка станет открыта для индексации поисковыми системами.

    Ещё умельцы уже научились взламывать админку Опенкарта более хитрым способом, об этом было написано в декабрьском номере Хакера. Там же приложен алгоритм.
    Будем надеяться, что разработчики учтут это в следующих версиях.

    • jul jul:

      Александр, спасибо за актуальное дополнение!
      P.S. Простите за длительную модерацию — по неведомой для меня причине, Ваш комментарий попал в спам.

    • Александр:

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

      • jul jul:

        Изменив название административной папки, мы, так сказать, указываем robots.txt о смене названия и о том, что теперь необходимо скрывать от поисковиков не папку с названием admin, а папку под тем названием, которое мы ей дали.
        Что касается пароля на папку или папки через хостинг — это тоже один из вариантов.

        • не вижу смысла переименовывать папку admin — файл robots.txt доступен для любого, кто захочет его посмотреть. И надеяться что кто-то соберется взламывать достаточно тупой чтобы не взглянуть на этот файлик пожалуй не стоит…

          • jul jul:

            Файл robots.txt можно скрыть от посторонних, задав команду через .htaccess, и тогда об административной папке никому известно не будет.

          • jul а если закрыть файл robots.txt через .htaccess, поисковики к нему будут иметь доступ?

          • jul jul:

            robots.txt должен быть открыт для поисковиков, так что его в htaccess помещать не следует, а то получится обратный эффект.

          • Вот и я о том же. Поэтому смысла переименовывать папку admin нет. Разве что переименовать ее и убрать вообще из robots.txt, в надежде что поисковики не найдут ее сами и не проиндексируют. но я бы на это не сильно надеялся…
            Так что пока, как мне кажется, лучшее средство менять логин со станартного admin, ставить пароль посложнее, и, наверно, капчу какую-то стоит приделать для входа в админку чтобы просто перебором не могли подобрать…
            Ну закрыть папку паролем через .htaccess…

          • jul jul:

            Проошу прощения, но своим предыдущим комментарием я ввела в заблуждение: прописав robots.txt в файл htaccess, мы не скроем его от поисковиков. Вот если сделать обратное (чисто теоретически): в robots.txt поместить htaccess, то мы, так сказать, скроем последний. А помещая robots.txt в htaccess мы просто задаем серверу дополнительное правило касательно этого документа (в нашем случае, не показывать его посторонним), что не помешает поисковикам считывать с него всю необходимую и указанную в нем информацию.
            Ну, а что касается логина admin и простого пароля, то от них надо избавляться в первую очередь! Что часто многие игнорируют…

          • Может у меня недостаточно пока знаний в нужной области, но я не понимаю, как можно в .htaccess закрыть robots.txt так, чтобы поисковики к нему имели доступ, а все остальные нет. Как файл будет определять, запрашивает его бот поисковой системы, или Вася Пупкин? По крайней мере в инете я не нашел нужного решения.
            Буду благодарен, если Вы подскажете код, который нужно для этого прописать в .htaccess.
            P.S. Я у себя все-равно не смогу закрыть этот файл в .htaccess, так как файлы с расширением .txt на моем хостинге обрабатываются сервером nginx, а не apache, поэтому .htaccess не реагирует на закрытие этих файлов…

          • jul jul:

            [Files «robots.txt»]
            order allow,deny
            deny from all
            [/Files]
            На месте «robots.txt» может быть любой файл, который необходимо скрыть. Квадратные скобки сменить на обычные «теговксие».
            А что касается сервера nginx, то вот в этом я не разбираюсь. Но, по логике, если Вы говорите, что он обрабатывает файлы с расширением .txt, то это относится к robots.txt, а поскольку .htaccess не имеет никакого отношения к этому расширению, то его команды сервер должен обрабатывать адекватно. Но утверждать не буду, так как с этим не сталкивалась и не разбиралась ранее.

          • [Files «robots.txt»]
            order allow,deny
            deny from all
            [/Files]
            А я почему-то уверен что эта команда скроет файл robots.txt и от поисковых роботов…
            Для проверки хочу предложить Вам скрыть свой файл robots.txt. И сразу в каком-нибудь яндекс вебмастере проверить ваш robots.txt.
            Я, к сожалению, это проверить не смогу по описанным мной причинам…

          • jul jul:

            А я почему-то уверен что эта команда скроет файл robots.txt и от поисковых роботов…

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

  2. Виталий:

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

  3. Спасибо большое за статью. ОЧЕНЬ важные вещи, простым доступным языком!

  4. У Вас очень хороший материал! Спасибо он мне помог!!!! Потому как были попытки взлома… У меня очень хороший хостинг поддерживающий SSL ЗАЩИТУ, и хотел бы у Вас узнать, что именно нужно прописать для SSL адреса в файле конфигурации???
    С уважением Алекс Рейнвальд

    • jul jul:

      Спасибо, Алекс, за отзыв!
      Что касается SSL защиты, то информацию по ее настройке должен предоставлять хостинг-провайдер. Если не находите документации по этому вопросу, то можете обратиться в тех.поддержку.
      Насколько я помню (по своему хостингу), то необходимо было лишь загрузить SSL сертификат. К сожалению, большего подсказать не могу.

  5. Cap:

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

    надо просто поправить файл в admin\view\template\common\header.tpl
    и между и вставить вышеуказанную строку.
    И не надо ничего светить в robots.txt :)

  6. По поводу скрытия роботс.тхт с помощью хтаккесс. МОжно хадать условия при котором будет братся юзер-агент и проверятся на вхождение YandexBot, Googlebot и.т.д. Это защитит от примитивного ввода через браузер адресса роботс.тхт, но не поможет если подменят реферрер

  7. aaaa:

    просто удивительно много косяков вылезло после переименования. Лучше бы я этого не делал

  8. alex:

    Если назначить права на конфиги 444 (чтение всем), то можно без проблем прочитать эти файлы кому угодно, а значит узнать ваши логины и пароли. Думаю, что надо так: 440 или 640

  9. Ольга:

    Прекрасная статья, спасибо! Возьму в закладки. Кое-что сразу применила, кое-что оставлю «на память». Мой магазин только создается и информация своевременная.

  10. Максим:

    Пробовал скрыть админ панель путем переименовывания название ссылки, не получилось, вообще не находит сайт

  11. Елена:

    Перенесла с денвера на хостинг сайт.
    Сайт работает, а в админку не могу попасть.
    Пишет ошибку:

    Warning: require_once() [function.require-once]: Unable to access /home/users2/5/5246/system/startup.php in /home/users2/5/5246/domains/dveriveka.ru/admin/index.php on line 15

    Warning: require_once(/home/users2/5/5246/system/startup.php) [function.require-once]: failed to open stream: Нет такого файла или каталога in /home/users2/5/5246/domains/dveriveka.ru/admin/index.php on line 15

    Fatal error: require_once() [function.require]: Failed opening required ‘/home/users2/5/5246/system/startup.php’ (include_path=’.:/usr/local/zend-5.3/share/pear’) in /home/users2/5/5246/domains/dveriveka.ru/admin/index.php on line 15

    Помогите пожалуйста!!

  12. Аккуратность во всех действиях нужна…когда делает по вышеизложенной статье. Но все равно для хорошего умельца это не помеха…единственно правильная защита …через смс ключи…но не каждый сайт сможет себе позволить…

  13. Артемий:

    Столько файлов приходится переделывать… Для неподготовленного или нетерпеливого человека — страшно:).

  14. Татьяна:

    Добрый день, Юлия.
    Просмотрела очень много материала на вашем сайте. Спасибо большое за публикации, они очень полезны в работе.
    Не нашла пару вещей, которые для меня в данный момент очень важны.
    Во-первых, подскажите, пожалуйста, каким образом можно добавить собственные страницы на сайт? Допустим, мне нужно добавить страницу некой информации, которую приходится полностью верстать самой. Но при попытке прописать путь к данной странице и пройти по этой ссылке ссылке выдается страница ошибки not_found.
    И второе — если я полностью переделываю уже существующую страницу под свои нужды, каким образом можно ее переименовать, чтобы в адресной строке появлялось то имя, которое необходимо?

    • jul jul:

      Татьяна, может не совсем верно поняла суть Вашего вопроса, но почему не используете «статьи» для добавления страниц с информацией?
      Ну, а если требуется абсолютно новая независимая страница, то можно создать новую схему (layout) и использовать ее. Как создавать схемы, я так поняла, Вы знаете.
      Для того, чтобы ссылки новых страниц были красивыми, надо сделать запрос к БД. Например, Вы создали новую схему в information под названием lessons и хотите назвать ее «уроки», то делаете запрос вида
      INSERT INTO oc_url_alias (query, keyword) VALUES (‘information/lessons’, ‘uroki’);

  15. Юрий:

    У меня вопрос по первому способу, как вы собираетесь прятать от поисковиков новое название админки?

  16. Андрей:

    Добрый день.
    Прежде всего спасибо за Ваши статьи, очень полезная информация.
    Спасибо за ответы.
    Вот вопросик:
    «Открываем файл config.php в корневой папке магазина и в путях вместо admin указываем название нашей новой папки (изменения будут внесены всего в один путь);»
    А у меня в корне вой папке нет пути с admin.

    • jul jul:

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

  17. Александр:

    И всё же какие права доступа необходимо указать admin/config.php, config.php ?

  18. Спасибо за статью— очень помогла.
    Остались непонятными следующие вопросы:
    1) Всё-таки зачем переименовывать папку admin, если в роботс.тхт— всё видно, а скрывать роботс.тхт— нельзя.
    2) Какие права доступа на файлы admin/config.php, config.php — нужно выставить через ftp-клиент, чтобы всё было кул— в разных источниках все пишут разное: вы- 444; другие 440 или 640..
    Ещё раз— огромная благодарность за статью— просто эти вопросы подвисли— и ответ на них— поставит красивую точку.
    Удачи Вам, уважаемая Jul!

  19. Сергей:

    А не проще через .htaccess — запретить доступ к папке ввв.вашсайт.ру/admin по ip?
    То есть, только вы можете попасть туда, а для остальных поставить 301 редирект на главную страницу?

    • jul jul:

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

  20. Сергей:

    Да.
    Метод для тех, у кого статический ip в большинстве конечно, если человек ленивый…

    Но вот что лучше, востанавливать взломаный магазин, и чистить код ( от бэкдоров, фишинга и т.д ), или же все таки сразу себя обезопасить?
    У меня был случай, когда ещё на далёкой «джумле» вскрыли админку, и я тогда много времени потратил на то,чтоб востоновить полноценную работу сайта, но и за то время пока сайт был вредоносным кодом, он успел попасть в фильтры «гугла» и т.д, и многие антивирусы на него ругались.
    Мне понадобилось около месяца ( а может и больше ) чтоб поисковики вновь считали мой сайт безопасным.

    Так вот, к чему я это всё.
    Если у вас есть доступ на хостинг, и даже если у вас не статический ip, что мешает каждый раз вам заходить и прописывать свой айпи для входа ? Только лень может этому помешать.

    Лучше, как говорится перестраховаться, чем потом начинать с 0….

  21. Сергей:

    А вообще, я чего хотел спросить то тут ещё…
    Может кто знает для версии 1.5.5.1.2 — хорошую фотогалерею и модуль новостей ?
    Вернее, нужна даже не фотогаллерея, а как бы «отзывы о сайте», не о каждом товаре, а именно о сайте с фотографией.
    То есть, хочется сделать что то типо «Наши довольные клиенты» и туда выкладывать фотографию человека с товаром + его отзыв о работе магазина.
    Буду очень благодарен, если кто то поможет.

  22. Прошу помощи
    В config.php нет путей admin
    Заменил admin/config.php.
    Не заработало — вернул обратно на admin, но теперь при попытке входа в http://мойсайт.ru/admin/ — белая страница
    Веб-сайту не удается отобразить страницу HTTP 500

    • jul jul:

      Не совсем поняла, что Вы такого сделали, что потеряли доступ к странице авторизации, но в любом случае, если правили admin/config.php, то загрузите этот файл из той версии opencart, которую используете. Затем зайдите в него и пропишите все пути (будьте внимательны, часто ошибки в путях приводят к проблема с админкой) и данные по БД.

  23. не-он:

    Подсказка. Для тех кто хочет сменить название папки админ и при этом скрыть ее в роботс.тхт воспользуйтесь правилами подстановки. Пример название папки админ меняем на абракадабраадминчухпых а в роботс прописываем Disallow: /*админ*. и с гуглом у вас все будет ок. С яндексом нужно будет договорится отдельно через настройки на самой яндекс-метрике.

  24. Константин:

    Здравствуйте!

    Хотел спросить по п. 4 E-mail+пароль и e-mail+админ-панель. А где задается пароль на почту? В админке? Почему он может совпадать с паролем на вход в админку?

    и вопрос про п. 5

    У меня на эти файлы стоит 644. пытался менять на 444 и файлзиллой и тотал командером — все равно 644.

    Спасибо!

    • jul jul:

      Добрый день,
      что касается разных паролей к почте и админке, то это само собой разумеющееся явление (даже пароли к разным ящикам должны быть разными, не говоря уже о коммерческом сайте). А совпадать он может по причине глупости людей — удобно им пользоваться одним паролем ко всему, что только можно запаролить…
      Касательно прав, то 644 вполне подходящие права для этих файлов, так как для всех будут выставлены атрибуты чтения и только для владельца будет доступна еще и запись.

  25. Саша:

    Здравствуйте Юля
    Спасибо за интересную и полезную статью,такая тема к сожалению как никогда актуальна в наше время!

    У меня вопрос про установку пароля на папки,я безуспешно пытаюсь «запаролить» папку admin, использовал два способа через установку фаила htaccess в директорию админ и через cpanel,оба способа работают, при попытке войти в админ панель запрашивают дополнительный пароль,но когда я включаю в движке ЧПУ, то при входе в админ панель вместо окна авторизации подгружается страница сайта с надписью «страница не найдена» и в админ панель я зайти не могу пока не уберу фаил htaccess или не сниму пароль в cpanel!
    Может вы сталкивались с такой проблемой?
    ps движок ocstor 2.1.0.1

  26. Олег:

    Спасибо большое за статью! :)

  27. По поводу «скрытие админ-панели от посторонних глаз»
    Заменив адрес в config.php, необходимо также переназвать саму папку. А затем при каждой установке модуля, вручную переименовывать папку admin в модуле. Не очень удобно то.

    Лично я сделал папку обманку, в которой index.php подключает index.php админки. Но чтобы все работало, необходимо в индексном файле админки подкорректировать код с использованием __DIR__ :
    // Configuration
    if (is_file(__DIR__ . ‘/config.php’)) {
    require_once(__DIR__ . ‘/config.php’);
    }
    А затем остается запретить доступ для всех незалогинненных пользователей к папке admin через скрипт.

    В методе есть недостатки. Так же как и по IP — который может меняться. К тому же, если несколько человек занимаются управлением сайта, то вообще жесть — постоянно следить за IP

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

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

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">