OpenCart — как защитить интернет-магазин от взлома
Сегодня мы рассмотрим немаловажный вопрос: как защитить свой магазин от взлома и проникновения?
Хотя OpenCart считается довольно защищенной системой управления, но и на нее находятся «умельцы», которые могут однажды принести горькое разочарование и убытки владельцу интернет-магазина. Так зачем это допускать? Попробуем еще немного защитить свой магазин от взлома. Следующие методы, которые мы можем предпринять для безопасности магазина, довольно просты и не требует никаких особых знаний, так что с ними справится даже начинающий осваивать OpenCart.
1. Одно из глобальных изменений, осуществляемых для защиты магазина на OpenCart, является скрытие админ-панели от посторонних глаз. Что это значит и как это сделать?
Для того, чтоб зайти в административную панель своего магазина мы просто набираем в адресной строке название своего сайта и admin: https://имя-сайта.com/admin. В открывшуюся форму вводим персональные данные: логин и пароль и незамедлительно попадаем в админку. Так вот первым шагом по защите магазина можно считать изменения адреса для входа в админ-панель. Чтоб для входа в админку мы могли набирать в адресной строке не стандартное и широко известное https://имя-сайта.com/admin, а например https://имя-сайта.com/manager-shop, https://имя-сайта.com/super-Admin, https://имя-сайта.com/adminka15-6, то есть что-либо иное помимо пресловутого admin.
Сделать это довольно просто:
- Папке admin даем новое, никому не известное название;
- Открываем файл config.php в корневой папке магазина и в путях вместо admin указываем название нашей новой папки (изменения будут внесены всего в один путь);
- Аналогично поступаем с файлом config.php, который находится в вышеупомянутой папке admin — меняем в путях admin на наше новое название (5 ссылок нуждаются в изменении).
2. Второй шаг защиты заключается в логине: никогда не оставляем для входа в админ-панель такой логин, как admin. Нет более доступного и общеизвестного логина чем admin, так что если при установке OpenCart, мы не изменили логин на более сложный, то это не поздно сделать сейчас. Самый простой способ сменить логин — это зайти в Aдмин-панель/Система/Пользователи и задать новый логин.
3. Также поступаем и с паролем — создаем или меняем на сложный и замысловатый, используя не менее 10 знаков, желательно разного регистра и с использованием спец. символов типа $, %, &, ^ и т.д.
Смену пароля осуществляем все из той же админки /Система/Пользователи.
4. E-mail+пароль и e-mail+админ-панель. Большинство магазинов в контактах помимо формы обратной связи также указывают один или даже несколько почтовых ящиков для связи. И необходимо помнить о том, что пароль для входа в админ-панель и пароль к почте должны быть разными, никогда не используйте один и тот же пароль для столь важных разделов вашего магазина. Ведь именно почтовый ящик является хранилищем информации о поступивших/оплаченных заказах с персональными данными ваших покупателей.
5. Обезопасим важные файлы: config.php и admin/config.php. Эти файлы содержат в себе весьма важную информацию: доступ к БД. По этой причине следует установить правильные права доступа к этим файлам: 0444 (только чтение).
Права на папки устанавливаем либо через хостинг (cPanel)/ либо через ftp-клиент, который обычно используем для загрузки файлов на сервер.
6. Отключаем отображение php ошибок. Благодаря этой возможности, которая по умолчанию в OpenCart включена, мы даем взломщикам дополнительную лазейку хакнуть наш магазин. Да и к тому же отображение ошибок не придает презентабельности нашему сайту. Эту функцию легко можно отключить из админ-панели/Система/Настройки/Сервер. Внизу напротив пункта «Показывать ошибки» отмечаем галочкой «нет». А для просмотра ошибок мы всегда можем воспользоваться журналом ошибок, имя которого есть чуть ниже. Журнал находится в корневая папка сайта/system/logs.
Вот на таком количестве способов защиты магазина на OpenCart мы пока что и остановимся. Может их не так уж и много, они незамысловаты, но, к счастью, действенны. Существуют еще варианты ограничения доступа к админке магазина и доступа по ftp через указания ip адреса, но эти изменения стоит вносить лишь в том случае если ваш ip адрес постоянный, иначе могут возникнуть проблемы с доступом к сайту. Если же кому-то будет интересен и этот способ защиты, то дайте знать и пост будет дополнен.
Очень полезный материал, спасибо.
Добавлю, что при смене папки admin на новую, надо в файле robots.txt также заменить все вхождения admin на новые в строках с Disallow.
Иначе админка станет открыта для индексации поисковыми системами.
Ещё умельцы уже научились взламывать админку Опенкарта более хитрым способом, об этом было написано в декабрьском номере Хакера. Там же приложен алгоритм.
Будем надеяться, что разработчики учтут это в следующих версиях.
Александр, спасибо за актуальное дополнение!
P.S. Простите за длительную модерацию — по неведомой для меня причине, Ваш комментарий попал в спам.
да, а зачем тогда менять название папки, если мы ее пишем в роботс.тхт
может проще тогда установить пароль на папку средствами хостинга?
Изменив название административной папки, мы, так сказать, указываем robots.txt о смене названия и о том, что теперь необходимо скрывать от поисковиков не папку с названием admin, а папку под тем названием, которое мы ей дали.
Что касается пароля на папку или папки через хостинг — это тоже один из вариантов.
не вижу смысла переименовывать папку admin — файл robots.txt доступен для любого, кто захочет его посмотреть. И надеяться что кто-то соберется взламывать достаточно тупой чтобы не взглянуть на этот файлик пожалуй не стоит…
Файл robots.txt можно скрыть от посторонних, задав команду через .htaccess, и тогда об административной папке никому известно не будет.
jul а если закрыть файл robots.txt через .htaccess, поисковики к нему будут иметь доступ?
robots.txt должен быть открыт для поисковиков, так что его в htaccess помещать не следует, а то получится обратный эффект.Вот и я о том же. Поэтому смысла переименовывать папку admin нет. Разве что переименовать ее и убрать вообще из robots.txt, в надежде что поисковики не найдут ее сами и не проиндексируют. но я бы на это не сильно надеялся…
Так что пока, как мне кажется, лучшее средство менять логин со станартного admin, ставить пароль посложнее, и, наверно, капчу какую-то стоит приделать для входа в админку чтобы просто перебором не могли подобрать…
Ну закрыть папку паролем через .htaccess…
Проошу прощения, но своим предыдущим комментарием я ввела в заблуждение: прописав robots.txt в файл htaccess, мы не скроем его от поисковиков. Вот если сделать обратное (чисто теоретически): в robots.txt поместить htaccess, то мы, так сказать, скроем последний. А помещая robots.txt в htaccess мы просто задаем серверу дополнительное правило касательно этого документа (в нашем случае, не показывать его посторонним), что не помешает поисковикам считывать с него всю необходимую и указанную в нем информацию.
Ну, а что касается логина admin и простого пароля, то от них надо избавляться в первую очередь! Что часто многие игнорируют…
Может у меня недостаточно пока знаний в нужной области, но я не понимаю, как можно в .htaccess закрыть robots.txt так, чтобы поисковики к нему имели доступ, а все остальные нет. Как файл будет определять, запрашивает его бот поисковой системы, или Вася Пупкин? По крайней мере в инете я не нашел нужного решения.
Буду благодарен, если Вы подскажете код, который нужно для этого прописать в .htaccess.
P.S. Я у себя все-равно не смогу закрыть этот файл в .htaccess, так как файлы с расширением .txt на моем хостинге обрабатываются сервером nginx, а не apache, поэтому .htaccess не реагирует на закрытие этих файлов…
[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.
Я, к сожалению, это проверить не смогу по описанным мной причинам…
Возможно, Вы правы. Обязательно проверю этот момент.
Сама ищу решение для этого вопроса, так что в верном ответе заинтересована.
Спасибо за статью !
И Вам спасибо за отзыв!
Огромное спасибо автору!Правда,жаль,что наткнулся на ету статью после взлома сайта.
Благодарю за теплый комментарий!
Удалось восстановить сайт после взлома?
спасибо, все сделал ;)
Пожалуйста )) Рада, что статья оказалась для Вас полезной!
Спасибо большое за статью. ОЧЕНЬ важные вещи, простым доступным языком!
Спасибо!)
У Вас очень хороший материал! Спасибо он мне помог!!!! Потому как были попытки взлома… У меня очень хороший хостинг поддерживающий SSL ЗАЩИТУ, и хотел бы у Вас узнать, что именно нужно прописать для SSL адреса в файле конфигурации???
С уважением Алекс Рейнвальд
Спасибо, Алекс, за отзыв!
Что касается SSL защиты, то информацию по ее настройке должен предоставлять хостинг-провайдер. Если не находите документации по этому вопросу, то можете обратиться в тех.поддержку.
Насколько я помню (по своему хостингу), то необходимо было лишь загрузить SSL сертификат. К сожалению, большего подсказать не могу.
Ребята, вы забыли про способ запрета индексации, который можно установить прямо в тексте самой страницы.
надо просто поправить файл в admin\view\template\common\header.tpl
и между и вставить вышеуказанную строку.
И не надо ничего светить в robots.txt :)
*META NAME=»ROBOTS» CONTENT=»NOINDEX,NOFOLLOW»*
вместо звездочек поставьте знаки «».
какие знаки вместо звёздочек надо поставить?
По поводу скрытия роботс.тхт с помощью хтаккесс. МОжно хадать условия при котором будет братся юзер-агент и проверятся на вхождение GoogleBot, Googlebot и.т.д. Это защитит от примитивного ввода через браузер адресса роботс.тхт, но не поможет если подменят реферрер
просто удивительно много косяков вылезло после переименования. Лучше бы я этого не делал
Если назначить права на конфиги 444 (чтение всем), то можно без проблем прочитать эти файлы кому угодно, а значит узнать ваши логины и пароли. Думаю, что надо так: 440 или 640
Прекрасная статья, спасибо! Возьму в закладки. Кое-что сразу применила, кое-что оставлю «на память». Мой магазин только создается и информация своевременная.
Спасибо! Вам удачи в развитии магазина!
Пробовал скрыть админ панель путем переименовывания название ссылки, не получилось, вообще не находит сайт
Перенесла с денвера на хостинг сайт.
Сайт работает, а в админку не могу попасть.
Пишет ошибку:
Warning: require_once() [function.require-once]: Unable to access /home/users2/5/5246/system/startup.php in /home/users2/5/5246/domains/dveriveka.com/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.com/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.com/admin/index.php on line 15
Помогите пожалуйста!!
Проблема решена. Спасибо
Елена, как вы решили проблему?
Аккуратность во всех действиях нужна…когда делает по вышеизложенной статье. Но все равно для хорошего умельца это не помеха…единственно правильная защита …через смс ключи…но не каждый сайт сможет себе позволить…
Столько файлов приходится переделывать… Для неподготовленного или нетерпеливого человека — страшно:).
Добрый день, Юлия.
Просмотрела очень много материала на вашем сайте. Спасибо большое за публикации, они очень полезны в работе.
Не нашла пару вещей, которые для меня в данный момент очень важны.
Во-первых, подскажите, пожалуйста, каким образом можно добавить собственные страницы на сайт? Допустим, мне нужно добавить страницу некой информации, которую приходится полностью верстать самой. Но при попытке прописать путь к данной странице и пройти по этой ссылке ссылке выдается страница ошибки not_found.
И второе — если я полностью переделываю уже существующую страницу под свои нужды, каким образом можно ее переименовать, чтобы в адресной строке появлялось то имя, которое необходимо?
Татьяна, может не совсем верно поняла суть Вашего вопроса, но почему не используете «статьи» для добавления страниц с информацией?
Ну, а если требуется абсолютно новая независимая страница, то можно создать новую схему (layout) и использовать ее. Как создавать схемы, я так поняла, Вы знаете.
Для того, чтобы ссылки новых страниц были красивыми, надо сделать запрос к БД. Например, Вы создали новую схему в information под названием lessons и хотите назвать ее «уроки», то делаете запрос вида
INSERT INTO oc_url_alias (query, keyword) VALUES (‘information/lessons’, ‘uroki’);
У меня вопрос по первому способу, как вы собираетесь прятать от поисковиков новое название админки?
Добрый день.
Прежде всего спасибо за Ваши статьи, очень полезная информация.
Спасибо за ответы.
Вот вопросик:
«Открываем файл config.php в корневой папке магазина и в путях вместо admin указываем название нашей новой папки (изменения будут внесены всего в один путь);»
А у меня в корне вой папке нет пути с admin.
Речь идет о пути к папке admin в конфигурационном файле.
Но я бы не советовала спешить переименовывать административную папку, потом, при установке сторонних модулей, будет много волокиты с путями.
На днях напишу статью о модуле для защиты админки, заходите, может, Вам он подойдет.
И всё же какие права доступа необходимо указать admin/config.php, config.php ?
Спасибо за статью— очень помогла.
Остались непонятными следующие вопросы:
1) Всё-таки зачем переименовывать папку admin, если в роботс.тхт— всё видно, а скрывать роботс.тхт— нельзя.
2) Какие права доступа на файлы admin/config.php, config.php — нужно выставить через ftp-клиент, чтобы всё было кул— в разных источниках все пишут разное: вы- 444; другие 440 или 640..
Ещё раз— огромная благодарность за статью— просто эти вопросы подвисли— и ответ на них— поставит красивую точку.
Удачи Вам, уважаемая Jul!
А не проще через .htaccess — запретить доступ к папке ввв.вашсайт.ру/admin по ip?
То есть, только вы можете попасть туда, а для остальных поставить 301 редирект на главную страницу?
Можно, конечно, настроить доступ только для своего ip, но этот метод не подходит для тех, у кого динамический ip.
Кстати, некоторые хостеры по умолчанию блокируют все остальные ip кроме ip владельца сайта.
Да.
Метод для тех, у кого статический ip в большинстве конечно, если человек ленивый…
Но вот что лучше, востанавливать взломаный магазин, и чистить код ( от бэкдоров, фишинга и т.д ), или же все таки сразу себя обезопасить?
У меня был случай, когда ещё на далёкой «джумле» вскрыли админку, и я тогда много времени потратил на то,чтоб востоновить полноценную работу сайта, но и за то время пока сайт был вредоносным кодом, он успел попасть в фильтры «гугла» и т.д, и многие антивирусы на него ругались.
Мне понадобилось около месяца ( а может и больше ) чтоб поисковики вновь считали мой сайт безопасным.
Так вот, к чему я это всё.
Если у вас есть доступ на хостинг, и даже если у вас не статический ip, что мешает каждый раз вам заходить и прописывать свой айпи для входа ? Только лень может этому помешать.
Лучше, как говорится перестраховаться, чем потом начинать с 0….
А вообще, я чего хотел спросить то тут ещё…
Может кто знает для версии 1.5.5.1.2 — хорошую фотогалерею и модуль новостей ?
Вернее, нужна даже не фотогаллерея, а как бы «отзывы о сайте», не о каждом товаре, а именно о сайте с фотографией.
То есть, хочется сделать что то типо «Наши довольные клиенты» и туда выкладывать фотографию человека с товаром + его отзыв о работе магазина.
Буду очень благодарен, если кто то поможет.
Прошу помощи
В config.php нет путей admin
Заменил admin/config.php.
Не заработало — вернул обратно на admin, но теперь при попытке входа в https://мойсайт.com/admin/ — белая страница
Веб-сайту не удается отобразить страницу HTTP 500
Не совсем поняла, что Вы такого сделали, что потеряли доступ к странице авторизации, но в любом случае, если правили admin/config.php, то загрузите этот файл из той версии opencart, которую используете. Затем зайдите в него и пропишите все пути (будьте внимательны, часто ошибки в путях приводят к проблема с админкой) и данные по БД.
admin/config.php — залил новый. Меню админки нет всё равно
Залить файл мало, необходимо внести всю необходимую информацию.
Да конечно,всё пути прописаны
Перезаливка папки admin не помогла
Нашёл трабл- в admin/config.php не поправил в одном месте. Спасибо за поддержку!))
И пользуясь случаем: за ваш сайт БОЛЬШОЕ спасибо! )))
Главное, что разобрались с проблемой.
И всегда пожалуйста)) Заходите еще! Удачи с магазином)
Подсказка. Для тех кто хочет сменить название папки админ и при этом скрыть ее в роботс.тхт воспользуйтесь правилами подстановки. Пример название папки админ меняем на абракадабраадминчухпых а в роботс прописываем Disallow: /*админ*. и с гуглом у вас все будет ок. С яндексом нужно будет договорится отдельно через настройки на самой яндекс-метрике.
Здравствуйте!
Хотел спросить по п. 4 E-mail+пароль и e-mail+админ-панель. А где задается пароль на почту? В админке? Почему он может совпадать с паролем на вход в админку?
и вопрос про п. 5
У меня на эти файлы стоит 644. пытался менять на 444 и файлзиллой и тотал командером — все равно 644.
Спасибо!
Добрый день,
что касается разных паролей к почте и админке, то это само собой разумеющееся явление (даже пароли к разным ящикам должны быть разными, не говоря уже о коммерческом сайте). А совпадать он может по причине глупости людей — удобно им пользоваться одним паролем ко всему, что только можно запаролить…
Касательно прав, то 644 вполне подходящие права для этих файлов, так как для всех будут выставлены атрибуты чтения и только для владельца будет доступна еще и запись.
Здравствуйте Юля
Спасибо за интересную и полезную статью,такая тема к сожалению как никогда актуальна в наше время!
У меня вопрос про установку пароля на папки,я безуспешно пытаюсь «запаролить» папку admin, использовал два способа через установку фаила htaccess в директорию админ и через cpanel,оба способа работают, при попытке войти в админ панель запрашивают дополнительный пароль,но когда я включаю в движке ЧПУ, то при входе в админ панель вместо окна авторизации подгружается страница сайта с надписью «страница не найдена» и в админ панель я зайти не могу пока не уберу фаил htaccess или не сниму пароль в cpanel!
Может вы сталкивались с такой проблемой?
ps движок ocstor 2.1.0.1
Спасибо большое за статью! :)