8 способов защитить ваше веб приложение


Содержание

Как обеспечить защиту сайта

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

Поэтому на начальных стадиях владельца волнует, чтобы все страницы корректно отображались, функционал выполнялся, а количество уникальных посетителей росло с каждым днём.

Но с течением времени, сайт растёт и развивается. О нём узнаёт всё больше людей, и далеко не все проявляют здоровый интерес. Угроза безопасности ресурса возрастает с каждой минутой его нахождения во всемирной паутине.

Хакеры норовят получить доступ к данным пользователей известного сайта, неудачливые копирайтеры пользуются магическими « ctrl+c, ctrl+v », увидев информативную статью, а вредоносные программы цепляются сами по себе с течением времени.

Именно поэтому защита сайта должна быть продумана как один из важнейших моментов в его « жизни ».

Защита от взлома

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

Когда вор ломает дверь, он получает доступ в квартиру, которая ему не принадлежит. У хакера же оказывается в распоряжении чужая информация или возможности.

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

Причина кроется в том, что CMS уже снабжают свой код всей необходимой защитой ( хотя и нет ничего непробиваемого ), а программист в одиночку может о чём-то позабыть.

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

Для надежной защиты от профессиональных хакеров нужно немало времени, еще лучше – найти специалиста по этим вопросам.

Но для борьбы с менее искушенными взломщиками достаточно следовать базовым рекомендациям:

  • Использовать сложные пароли. Чем больше символов использовано, тем дольше будет работать программа по автоматическому подбору. Стоит ли говорить о том, что собственное имя или год рождения – не самые подходящие данные для пароля.
  • Административная панель – только для администратора. Если доступ к « админке » имеют ваши знакомые, их знакомые и некий Аноним Неизвестный, то велика вероятность, что у ресурса появятся « куртизанские наклонности ».
  • Запоминайте пароли или держите их в менеджерах. Текстовый файл « Мои самые важные данные » на рабочем столе – это, по-своему, очень круто, но непосвященным в такую религию лучше использовать специальные программы, которые обеспечат шифровку и сортировку паролей.
  • Не переходите по непроверенным ссылкам и не допускайте их появления на сайте. Контроль над обновлением информации позволит значительно сократить количество нежелательных линков.

Защита от копирования

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

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

Если ресурс имеет солидный возраст и авторитет, то владельцы особо не переживают по поводу копирования контента. Но если сайт молод и еще не снискал уважения поисковиков, то « позаимствованная » информация может очень негативно сказаться на развитии ресурса.

То, что контент вашего сайта кому-то полезен – хорошо. Но если копирование происходит без размещения обратной ссылки, то ресурсу от этого будет только плохо. Для того чтобы воспрепятствовать подобным действиям, осуществляется защита сайта от копирования. Для её обеспечения применяют следующие методы.

  • Запрет копирования. Можно использовать скрипты, запрещающие выделение и перетаскивание текста. Конечно, опытные пользователи без труда обойдут это ограничение, но вероятность копирования будет снижена.
  • Помещать название сайта в текст. Если человек бездумно скопирует и вставит информацию, то адрес или имя вашего ресурса помогут определить первоисточник:
  • Лайки и ретвиты. Если пользователи активно сигнализируют о том, как им нравится страница вашего сайта, поисковики не смогут пропустить это. Чем быстрее произойдёт индексация, тем выше вероятность определения сайта как первоисточника.
  • Указывать авторство. Можно связать свои статьи с профилем в Google+, тогда ваше имя и фамилия укажут на то, кто был первым.
  • Предупреждать поисковик заранее. Яндекс.Вебмастер предоставляет очень удобный инструмент «Оригинальные тексты», с помощью которого можно заблаговременно уведомить поисковую систему о скором выходе нового материала. Получив и обработав текст статьи, роботы будут знать, кто автор и где искать первоисточник.
  • Кросспостинг. Если другие сайты трубят о том, что у вас вышла новая статья, поисковые роботы смогут гораздо быстрее об этом узнать.
  • Защита от вирусов

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

    • Проверять антивирусом компьютеры людей, у которых имеется доступ к административной части сайта.
    • Стараться избегать использования Internet Explorer. Являясь наиболее популярным браузером, IE привлекает к себе пристальное внимание создателей вирусов.
    • Используя CMS, необходимо своевременно переходить на новейшие версии программного обеспечения.
    • Обновлять антивирус как можно чаще.

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

    Проверим сайт на вирусы с помощью сервиса Antivirus-alarm.ru :

    Проверим сам сервис на вирусы:

    Получаем список проверяемых файлов,

    а также результаты проверки.

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

    Но важно постоянно обращать внимание на защиту ресурса и следовать современным тенденциям.

    Безопасный сайт – надёжный, а надёжным доверяют.

    Как защитить и обезопасить свой сайт

    Обезопасить веб-сайт – основная задача не только системного администратора или человека, выполняющего его роль, но и непосредственного владельца интернет-источника.

    Страшно представить, к чему способно привести пренебрежение безопасностью интернет-ресурса. Это может быть, как ухудшение поисковых позиций сайта, так и падение репутации компании в глазах её потенциальных и действующих клиентов, их полный и безвозвратный уход. К примеру, если посетитель зайдет на веб-сайт организации и при работе с ним заразит свою операционную систему, впечатления останутся явно негативными, а в некоторых случаях, сложившаяся ситуация вызовет вспышку агрессии по отношению к владельцу веб-ресурса.

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

    По этим причинам, одной из самых приоритетных задач предпринимателя или руководителя организации, будет являться обеспечение комплексной защиты и безопасности функционирующего веб-сайта.

    Стоит отметить, что сам по себе вирус на сайте, только в редких случаях попадает на него случайным образом, в преобладающем большинстве – это часть преднамеренной атаки, в ходе которой вирусный код играет лишь определенную вспомогательную или (в некоторых случаях) исполнительную роль в комплексе, сопровождаемом и другими способами нападения. Таким образом, процесс защиты нужно выстраивать не только от вредоносных скриптов и кода, но и различных способов атак. К примеру, наиболее популярные среди хакеров Dos и Ddos-атаки являются первым шагом к нахождению уязвимостей, что повлечет за собой и процесс спланированного заражения или «вбросом» «трояна» – разновидности вируса, основная роль которой заключается в краже любого-вида данных.

    Основные виды угроз

    Несанкционированный доступ

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

    Dos и Ddos-атаки, уже упомянутые нами ранее, хоть и не связаны с заражением источника вирусным кодом, но способны доставить большие проблемы владельцем интернет-ресурсов. До сих пор надежной 100% защиты от данного способа вредительства нет. Принцип основан на отправке массовых запросов с одного (Dos) или нескольких устройств, объединенных в сеть (Ddos), к серверу, на котором располагается веб-ресурс. В результате, система уходит в защиту (выдаётся код ошибки) или она «подвисает», что даёт возможность обнаружить «дыры» (на языке хакеров, обозначают уязвимости) для дальнейших действий, в том числе и загрузки вируса-трояна, который будет воровать и/или перенаправлять конфиденциальные важные данные своему «хозяину». Dos и Ddos атаки являются самыми популярными способами проверки защиты интернет-ресурса, потому что связаны не только с кражей информации, но и с каким-либо другим видом вредительства.

    Все способы защиты от данного вида атак связаны с грамотной настройкой серверного оборудования и установленного на нем программного обеспечения. Выбор надежного хостинг-провайдера является ещё одной важной и неотъемлемой частью комплексной системы защиты. Запрет на приеме данных от пользователей, имеющих зарубежные IP-адреса, позволит затруднить деятельность злоумышленников или выиграть время.

    Стоит также упомянуть и SQL-инъекции, то есть запросы через адресную строку (используя GET-параметры) непосредственно к базе данных. Применив специальную комбинацию sql-запроса и при допущении данной возможности со стороны сайта, злоумышленники смогут получить полный доступ к базе данных (БД), в том числе возможность скачать, удалить, изменить.

    Чтобы защититься от данного способа манипулирования БД вашего веб-сайта, потребуется использовать в коде только параметризованные запросы, хранимые процедуры, регулярные выражения, функции блокировки и отключить вывод сообщений об ошибке. Важно, чтобы доработкой системы безопасности занимался опытные веб-мастер и программист (не ниже уровня «Middle»). Не пытайтесь это сделать самостоятельно без соответствующих познаний, так это может нарушить целостность работы системы и приведёт к выходу веб-ресурса из строя.

    XSS-атака заключается в «краже» информации другого уровня – «файлов Cookies», что позволит получить доступ к информации пользовательских аккаунтов. Способ действия основан на внедрении на страницу веб-сайта кода-скрипта (js), который будет запущен автоматически при входе на сайт пользователем. В большинстве случаев, используется взлом сервера, на котором хранится сайт, или происходит его заражение вирусом. При совершении XSS-атаки злоумышленники могут не только красть данные пользовательских аккаунтов, но и перенаправлять их на другие веб-сайты, открывать дополнительные окна, заражать ПК пользователей. Способы защиты заключаются в закрытыи возможности отправки в БД параметров POST и GET запросов напрямую, без предварительной проверки, а также те меры закрытия уязвимостей, которые применялись для инъекций-sql. Стоит отметить и необходимость реализации проверки заполняемых данных в формах сайта на наличие запрещённых символов и кода.

    Со стороны владельца веб-сайта нужно быть всегда готовым к такому роду атак, особенно когда речь идет о высококонкурентной нише, где каждый привлекаемый клиент идёт «на вес золота».

    Блокировка или ограничение доступности веб-сайта

    Блокировка или ограничение доступности веб-сайта в интернете — ещё одна распространенная проблема и угроза, с которой периодически сталкиваются компании различного уровня.

    Ведёт за собой и ухудшение позиций в поисковых выдачах «Яндекса» и «Google».

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

    Заражение сайта

    Заражение сайта с целью получения возможности атаки на пользователей сайта и дальнейшее распространение вируса в интернете. Как правило, связан с мошенническими действиями, основная цель – посетители веб-сайта и их устройства. В большинстве случаев, зараженный веб-ресурс является всего лишь переносчиком, запускающим специальный скрипт, который и распространяет вирусный код на устройства пользователей. Кроме вредительской деятельности, может осуществлять функции по сбору любого рода информации с ПК, ноутбуков, смартфонов и планшетов (чаще всего номера банковских карт и данные приложений от клиент-банка).

    Специфические угрозы

    Можно отметить и ещё несколько видов угрозы – «Специфические». Они не связаны напрямую с вирусным заражением, но способны значительно навредить бизнесу компании. Первый из них, — это «фишинг», который заключается в создании и размещении на сторонних интернет-площадках копии сайта с формами для ввода данных. Цель данной деятельности – кража конфиденциальных персональных данных посетителей и клиентов компании. Страшно представить, к чему способно привести попадание на копию сайта, полностью повторяющую «Сбербанк Онлайн». Единственная защита от фишинга – внимательность пользователей. Хоть и все популярные системы ведут борьбу с данным видом угроз, в интернет-сети периодически всплывают сайты-двойники.

    Другим видом угрозы для сайта компании является массовая закупка внешних ссылок низкого качества на веб-сайт конкурента, что загонит его под «фильтр поисковых систем». Часто падение позиций в органической выдаче связывают с действием вредоносного кода, хотя на самом деле причина может быть именно в данном факторе. Чтобы защититься, регулярно следите за позициями веб-сайта, просматривайте сведения в панелях «Вебмастера». Особое внимание уделяйте такому показателю, как ТИЦ. Его неоправданно быстрый и резкий рост, как правило, и вызван происками злоумышленников.

    Как узнать заражён ли вирусом сайт?

    Первым сигналом того, что веб-ресурс инфицирован – бурная и острая реакция при его посещении со стороны «штатного» антивируса, установленного на ПК. Другим настораживающим фактором может являться резкое ухудшение позиций сайта в органической выдаче. Возможно также появление предупредительной надписи в сниппете веб-сайта о том, что источник заражен (на страницах появляется неестественный ему текст), работа и прогрузка страниц отличаются «от стандартных».

    Чтобы проверить веб-ресурс, можно использовать средства сервисов «Яндекс Вебмастер» и «Google Webmaster», или с помощью сервиса: rescan.pro

    Инструменты «Вебмастера» диагностируют веб-сайты регулярно и отображают статус с режиме реального времени.

    После проверки сервисом отобразится отчёт с подробной информацией о состоянии сайта.

    Многие хостинг-площадки имеют встроенный антивирус, который легко можно запустить всего за несколько кликов.

    Ещё одним признаком наличия вредоносного кода, является присутствие постороннего тега «iframe».

    Как защитить сайт от вирусов

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


    Использовать надежные сложные пароли.

    Установка защиты от «брута» (перебора комбинаций с целью определения подходящего) пароля, включение ограничения количества попыток ввода.

    Для защиты доступа на выделенный сервер или хостинг, используйте двухуровневую процедура входа, с смс-информированием.

    Используйте надежный антивирус на рабочем ПК, с которого осуществляется работа с файлами на сервере.

    Запретите доступ с IP-адресов, по геоопределению не относящиеся к РФ.

    Подключить протокол https.

    Использовать отличный от стандартного способа входа, адрес для захода в панель-администрирования. Как правило, на популярных системах использованы http://site.ru/admin.php или http://site.ru/manager.php. Поменяв путь к доступу, усложнится задача для происков злоумышленников.

    Выполнить запрет на ввод кода и спецсимволов в формах сайта.

    Не пересылать данные для входа на сайт и сервер/хостинг через корпоративную почту с общим доступом работников, а также через мессенджеры, социальные сети, sms.

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

    Пользоваться методами защиты базы данных от sql-инъекций, XSS-атак.

    По возможности отказаться от использования «самодельных» движков, систем управления контентом и администрирования сайта, так как могут наблюдаться колоссальные проблемы с точки зрения уязвимости веб-ресурса, за исправление которых придётся заплатить значительную сумму денег, потому что веб-программисты не любят работать с «чужим» кодом, особенно, если он не профессионально написан и в нём много «мусора».

    Если проект разработан или ещё разрабатывается на каком-либо фреймворке, привлеките к работе специалиста по информационной безопасности и защите. Это снизит риск обнаружения «дыр» (уязвимостей) хакерами со стороны веб-сайта (полностью исключить невозможно, так как даже на самую надежную систему, может найтись возможность преодоления системы безопасности профессиональным интернет-взломщиком).

    Что делать, если сайт заражен?

    Если хостинг поддерживает антивирус, воспользоваться им, запустив сканирование.

    Ограничить доступ к интернет-ресурсу, установив «заглушку» — защиту или отключить сайт в панели администрирования. Если данное действие не сделать, Вы рискуете навредить посетителям сайта, в том числе и вашим постоянным клиентам.

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

    Проверьте наличие вредоносного кода во всех файлах вручную – если обладаете данными навыками, если нет – поручите штатному или удаленному (стороннему) веб-специалисту. Обращайте внимание на теги , а также файлы JS, которые являются наиболее привлекательными с точки зрения вредоносного кода. Если используется CMS, то проверку стоит проводить не только в основных файлах, но и дополнительных, в том числе других тем и шаблонов.

    Проверьте базу данных и её целостность, наличие вируса в ней.

    Ограничьте права доступа остальным пользователям, удалите «подозрительных».

    Установите и устраните причину заражения, чтобы избежать повторного попадания вредоносного кода.

    По окончании включите сайт, проверьте его ещё раз с помощью стороннего сервиса-антивируса и инструментов «Вебмастера» в «Яндексе» и «Google».

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

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

    БЕЗОПАСНОСТЬ WEB-ПРИЛОЖЕНИЙ НА PHP

    студент, факультет информатики Самарский национальный исследовательский университет,

    студент, факультет информатики Самарский национальный исследовательский университет,

    студент, факультет информатики Самарский национальный исследовательский университет,

    студент, факультет информатики Самарский национальный исследовательский университет,

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

    Валидация входящих данных

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

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

    Защита от XSS атак

    Межсайтовый скриптинг (Cross Site Scripting — XSS) позволяет злоумышленнику включать свой HTML код в вашу станицу. Наиболее уязвимы для такого вида атак являются приложения, где происходит динамическое формирование страниц. Суть атаки — выйти за пределы HTML тега, через специальные символы, и далее внедрять свой код. Защита от этого вида атак сводится к фильтрованию данных отосланных пользователем.

    Рассмотрим код уязвимой станицы, отображенный на рисунке 1:

    Рисунок 1. Форма ввода, подверженная атакам XSS

    Злоумышленнику достаточно сформировать URL следующего вида:

    и страница будет уже содержать следующий код:

    Рисунок 2. Демонстрация уязвимости

    Данный код не причиняет вреда, а лишь демонстрирует уязвимость XSS, отображая cookie. Следует помнить, что код может быть другим, более опасным.

    Чтобы обезопасить себя от такого вида атак, следует отфильтровать значение, передаваемое через параметр username, например, при помощи регулярных выражений:

    Рисунок 3. Проверка данных с помощью регулярного выражения

    Следует проверять все переменные получаемые от пользователя — GET, POST, COOKIE. Во все из них без труда можно встроить зловредный код. Особое внимание следует уделять паролям, так как в них не принято вводить ограничения на символы.

    PHP обладает несколькими функциями, позволяющими значительно облегчить задачу защиты web-приложений. Одной из таких функций является htmlspecialchars() которая гарантирует, что любой введенный пользователем код (php, javascript и т.д.) будет отображен, но выполняться не будет.

    Защита от CSRF атак

    Следующий вид атаки, который мы рассмотрим, это CSRF атака или подделка межсайтовых запросов. Атакующий использует различные трюки для получения конфиденциальной информации или совершения сделки без ведома жертвы. В основном это происходит на плохо защищённых сайтах, где бизнес логика строится на работе GET запросов.

    Вообще говоря, GET запросы идемпотентны. Идемпотентность, в данном контексте, означает, что доступ к одной и той же странице может быть осуществлён сколько угодно раз без всякого стороннего вмешательства. Именно поэтому GET запросы должны использоваться только для получения доступа к информации, но ни в коем случае не для осуществления различного рода транзакций.

    В качестве предотвращения подобного рода атак, используйте только POST запросы к процессам, предназначенным для изменения информации в базе данных. Не используйте $_REQUEST. Пользуйтесь $_GET-ом для обработки GET параметров, и $_POST для извлечения POST параметров.

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

    Цукерберг рекомендует:  #kibersport - Киберспорт и спорт

    Предотвращение SQL инъекций

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

    Для выполнения запросов к базе данных следует использовать PDO. Благодаря параметризированным запросам и подготовленным выражениям, вы можете свести на нет угрозу SQL инъекций.

    Давайте рассмотрим следующий пример:

    Рисунок 4. Проверка данных с помощью PDO

    В коде, представленном выше, мы отправляем запрос в метод prepare(), включая именные параметры: :name и :age. Таким образом, запрос пре-компилируется для дальнейшей подстановки данных. При вызове метода execute(), запрос полностью формируется и выполняется. Если вы пользуетесь подобной техникой, то все попытки злоумышленника осуществить SQL инъекцию будут сведены к нулю.

    Обработка ошибок

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

    На публичном сервере вам необходимо отключить такие опции, как display_errors и display_start_up_errors, а вот такие опции как error_reporting и log_errors, должны быть активны, чтоб все ошибки, возникшие у пользователей, записывались в логи.

    Также вы можете использовать “set_error_handler” для определения своего собственного обработчика ошибок. Однако тут могут возникнуть ограничения, ведь собственный обработчик уступает родному PHP механизму. Ошибки E_CORE_ERROR, E_STRICT или E_COMPILER_ERROR не смогут быть отловлены в том же файле, где и определённый обработчик. Более того, ошибки, которые могут возникнуть в самом обработчике также не смогут быть отловлены.

    Для более элегантного способа отлавливания исключений, потенциально опасный код нужно помещать в блок try/catch. Все собственные исключения должны быть объектами классов или подклассов Exception. Если исключения и были выброшены, то в блоке try/catch их можно обработать.

    Защита подключаемых файлов

    Часто в PHP скриптах происходит подгрузка других файлов, таких как подключение к базе и многих других. Некоторые разработчики дают таким файлам расширение .inc. Такие файлы по умолчанию PHP не парсит. Если обратиться к ним по адресу напрямую, пользователь сможет увидеть текст данного файла. Если же хакеру удастся получить доступ к файлу хранящиму данные подключение к базе, то в последствии он может получить доступ ко всем данным вашего приложения. Так что всегда используйте расширение .php для подгружаемых файлов и храните их там, куда нет прямого пользовательского доступа.

    Как защитить веб-приложение от взломщиков

    Существуют различные рекомендации, которых следует придерживаться каждому, кто специализируется на разработке веб-приложений. Приведем наиболее распространенные и в то же время эффективные методы.

    1. Первый метод защиты веб-приложений заключается в использовании средств, позволяющих анализировать систему защиты. Часто специалисты делают это вручную, однако есть приложения и даже онлайн-сервисы, которые помогут облегчить задачу. Например, с помощью SSL Server Test можно проанализировать SSL-конфигурацию сервера. Сервис One Button Scan просканирует DNS, SSL, заголовки ресурса на наличие эксплоитов. Для проверки эксплоитов конфигураций, созданных на ASP.NET, можно использовать ASafaWeb. Будьте внимательны, некоторые сервисы выполняют публикацию отчетов о проверках на всеобщее обозрение. В первую очередь, важно исправлять критические моменты. Рекомендуется повторить сканирование после исправления всех замечаний. Вы можете воспользоваться GET и POST запросами, изменяя их значения, чтобы самостоятельно попробовать осуществить взлом собственного ресурса. Для перехвата значений HTTP-запросов обычно используется прокси-сервер отладки (как вариант, Fiddler). Для получения доступа к страницам, требующим аутентификацию, можно изменять данные URL или любые Cookie.
    2. Использование HTTPS необходимо в том случае, когда пользователи осуществляют передачу персональных данных на сервер (например, информация о дебетовой карте, адреса страниц и т.д.). Если происходит установка Cookie, которые могут быть отправлены на сервер, злоумышленники непременно этим воспользуются и подделают запрос. Так может быть перехвачена сессия. Вот почему использование HTTPS необходимо для всех страниц ресурса. SSL-сертификат может быть сгенерирован с помощью Let’s Encrypt. Также без проблем активируется поддержка HTTPS для сервера. Отметим, что сейчас Google будет регулярно присылать предупреждения каждому пользователю, который заходит на HTTP. Это должно сподвигнуть владельцев ресурсов массово перейти на HTTPS. Кроме того, для защиты от взлома рекомендуется постоянно обновлять программное обеспечение. Это послужит хорошей профилактикой.
    3. Пароли лучше хранить в виде хеша. Специалисты рекомендуют использовать алгоритмы для одностороннего хеширования. Подойдет SHA. Даже в том случае, если злоумышленнику удастся взломать сайт, а также получить хешированные пароли, то он все равно не получит исходную информацию, ведь хеш невозможно обратить.

    Процесс хеширования

  • Для контроля надежности пароля необходимо сделать валидацию такой, чтобы минимальная длина была исключена, также необходимо отслеживание на совпадение с логином, адресом ресурса и электронной почтой.
  • Важно отслеживать сообщения об ошибках. Она не должна содержать техническую информацию, все сведения важно сохранять в лог-файле сервера. Помните, что подробная информация поможет злоумышленникам провести комплексную атаку. В этом деле помогает мониторинг ошибок, существует немало полезных средств, которые упростят данную задачу. К примеру, Sentry может автоматически отслеживать ошибки в коде и позволяет контролировать действия пользователей в режиме реального времени.
  • Безопасность веб сайтов и защита от атак

    Залогом безопасности любого сайта является правильная политика безопасности. Многие хостинги используют или настройки по умолчанию, или упрощенные конфига — для работоспособности различных решений. Однако для большинства веб-ресурсов многие настройки излишни, и можно повысить безопасность, настроив правильно конфигурацию сервера. Именно в этой статье я постараюсь максимально раскрыть возможные изменения серверных настроек и то, какие последствия они могут за собой повлечь. Попытаюсь объяснять доступным языком, чтобы было понятно не только просвещенным, но и начинающим вебмастерам.

    Настройка сервера apache для безопасной работы вебсайта


    Что вообще из себя подразумевает безопасность веб-сайта? Это целый комплекс мер, нарушение целостности хоть одного компонента может привести ко взлому. Поэтому важно соблюдать все аспекты для защиты своего проекта. Минимальный набор подразумевает в себе надёжное интернет подключение (не публичный Wi-Fi) с охраной компьютера в виде антивируса и фаервола на страже порядка. Используйте защищенные протоколы для редактирования файлов сайта такие как HTTPS, SSH, SFTP — это предотвратит передачу данных в открытом виде. Так мы защитим сайт от атак со своей стороны, однако злоумышленники чаще пользуются уязвимостями серверов или CMS.

    Поэтому необходимо поддерживать версии систем управления и плагинов актуальными: обновлять сразу до последней версии, особенно содержащие патчи безопасности. Не мешает контролировать целостность файлов, бдительность стоит соблюдать если доверяете работу над сайтом посторонним людям: фрилансерам, разным шарашкиным конторам и тому подобное. Стоит уделить внимание и периодическим аудитам безопасности. Однако всё это больше из теории защиты самого сайта, будем полагать, что остальные составляющие у нас не вызывают нареканий и нам осталось настроить грамотную работу сервера, дабы обезопаситься от атак взлома, проникновения вредителей и заражения.

    Настройка Apache для повышения безопасности

    Начнём с простых основ (будем считать, что наши сайты используют PHP, а не другие технологии) и сконфигурируем пхп под требования безопасности. Эта часть статьи может подойти и для шаред хостингов: многие провайдеры позволяют частично либо полностью редактировать конфигурационный документ php.ini, так и для выделенных серверов с различными связками apache, nginx, php-fpm.

    Интерпретатор исполнения кода есть на каждом сервере, и для начала отключаем небезопасные функции и команды. Для этого нам необходимо найти и отредактировать php.ini

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

    Открываем и редактируем значения либо добавляем следующие строки:

    Этими директивами мы запретим исполнение опасных скриптов с посторонних сайтов. Если по каким-либо причинам это нарушает работоспособность, к примеру компонента видеокаталога с ютуба, то можно разрешить исполнение. Кроме этого необходимо быть внимательными при наличии Recaptcha Google — если Вы не проверяете секретный ключ посредством curl, то allow_url_fopen придется включить для корректной работы рекапчи.

    Скрыть версию PHP

    Следующим шагом минимизируем информацию о программном обеспечении на сайте. Совсем ни к чему отсылать в заголовках версию PHP — на работоспособность эти строчки не повлияют никоим образом!

    Обязательно стоит скрыть отображение ошибок — это ни к чему на работающем сайте посетителям видеть пугающую информацию, а злоумышленники могут воспользоваться для раскрытия путей и получения другой интересной информации. При этом обязательно собирайте информацию об ошибках в файл логов и периодически просматривайте её. Отключить показ ошибок PHP можно простой строкой:

    Список disable_functions в php.ini для Joomla и WordPress

    Важным моментом будет запретить опасные функции. Список их может варьироваться от необходимо функционала на сайте, я приведу оптимальную на свой взгляд конфигурацию. При необходимости можно убирать или добавлять сюда свои значения. Ищем в php.ini строку с disable_functions ( создаём, если нету) и отключаем следующие функции:

    Остановимся немного подробнее, за что они отвечают и зачем их вырубать.

    Для безопасности работы системы ограничиваем доступ к системным функциям, а именно к процессам и всевозможным запускам команд и шеллов.

    popen и pclose отвечают за открытие и закрытие файловых указателей процессов, proc_open позволяет выполнить команду в новом процессе, а proc_close завершить вызванный процесс.

    proc_terminate уничтожает процесс, запущенный с помощью proc_open, а функция proc_nice позволяет контролировать приоритет процессов.

    Однако это не все функции, которые позволяют открывать программы.

    Запустить внешнюю программу можно с exec, а увидеть необработанный результат вывода в придачу позволяет passthru

    Исполнять утилиты можно с php расширением system, в то же время shell_exec выполнит команду посредством шелла (оболочки) и вернёт полный вывод строкой.

    Внимание стоит обратить на семейство posix_ функций, отключаем отвечающее за ид процессов (posix_setuid, posix_setsid), за снятие процесса (posix_kill) и вывод информации о системе (posix_uname)

    Присмотреться можно и к ветке pcntl_ — мы лишь обойдёмся ограничением запуска программы в новом процессе посредством pcntl_exec

    Загружать библиотеки во время исполнения позволяет функция dl, а если использовать ini_restore, то можно сбросить настройки до заводских настроек — это нам согласитесь совсем ни к чему.

    Переключимся теперь к важным аспектам, которые используют хакеры в своих скриптах и которые затрудняют работу специалистов информационной безопасности. Злоумышленники зачастую подменяют дату файла, подделывая значения в попытке выдать, что он здесь годами лежал. Поэтому добавить в список touch считаю обязательным.

    Кроме этого часто выставляют права на директории и файлы 555 и 444 соответственно, дабы защитить от записи. Однако без блокировки chmod и правильной настройки владельцев и их прав это просто бесполезно — любой скрипт спокойно изменит атрибуты файла и снимет ограничение на изменение файла. Сюда же стоит отнести и команду chown — она позволяет изменять владельцев файлов, и chgrp — модификация группы владельцев файла.

    Удаляем возможность получить информацию о системе: php_uname и phpinfo (для разработчиков часто требуется, только для завершенных проектов), а также внесение изменение в системные логи через syslog

    Более детальную функцию можно посмотреть в документации, там же можно поискать чем дополнить список. Приведенный выше вариант успешно работал на популярных CMS Joomla, WordPress и другие. При этом основная функциональность не была нарушена, невозможно просмотреть информацию о системе и при загрузке файлов или установке расширений можно увидеть предупреждение, что не удалось сменить права на файл. Для цмс ModX Evo стоит убрать touch из списка, иначе загрузить файлы в медиа-менеджере не получится, а будете получать ошибку «Нет доступа или невозможно создать папку миниатюр.»

    Параноидальная защита сайта в php.ini

    Можно поэксперементировать и с таким вариантом, он немного более расширенный, добавлены все функции posix:

    В комментариях можете предлагать свои вариации.

    На этом мы не будем останавливаться и добавим директиву open_basedir. За что она отвечает? Ответ прост, по умолчанию мы не ограничиваемся папкой чтения и запросив каталог на уровень выше можем попасть к системным и конфигурационным файлам либо же к файлам другого домена, если сайтов на аккаунте несколько. Это самый примитивный способ разделить проекты, если по какой либо причине не можете выделить под каждый веб-сайт отдельный хостинг. При этом не стоит полагаться только на этот метод, он распространяется на php интерпретатор, если же у вас будет разрешено исполнение bash, python, cgi и другого рода скриптов, то они с легкостью смогут обойти данное ограничение.

    Обезопасить сайты ограничением open_basedir

    В файл php.ini необходимо добавить путь к сайту плюс путь к временным файлам через двоеточие:

    Для .htaccess файлов можно использовать код ниже, только желательно, чтобы файл был выше корня сайта (иначе файл может быть перезаписан и ограничение будет снято):

    Для нескольких сайтов можно воспользоваться директивой host:

    Однако если есть возможно, то лучше сразу делать это в конфигурацинных файлах апача (httpd.conf или конфиг сайта в папках vhosts или sites). Синтаксис в этом случае будет немного другим:

    Кроме этого есть варианты конфигурации для более старых версий php — на данный момент морально устарели и по умолчанию имеют уже необходимое значение. К таким функциям относятся «волшебные кавычки» magic_quotes_gpc, регистрация глобальных переменных register_globals и защищенный режим safe_mode.

    Конфигурация php.ini против DDos

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

    Почему же так делать не стоит? Ответ достаточно прост, если создать ресурсоемкий запрос, а потом ещё один, а потом ещё несколько — вот пример элементарной атаки DDos на сайт. Этим могут воспользоваться не только хакеры, но и ваши конкуренты. Чем вообще грозит этот тип атаки и к чему может привести? Оперативная память и процессор вашего блога или магазина не безграничны, и в какой-то определенный момент они иссякнут. Тогда сервер не сможет обрабатывать запросы и сайт перестанет быть доступным и не будет открываться. И совсем не вовремя будет, если провайдер решит применить санкции за превышение лимитов использования ресурсов и заблокировать аккаунт и приостановить действие услуг.

    Минимализируем время исполнения скриптов следующими строчками:

    Если сайт шустрый и хорошо оптимизирован, то можно выставить значение:

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

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

    Добавляем ограничение на размер вводимых данных посредством POST запросов:

    Защищаем куки от XSS атак:

    Отключаем ненужные приложения пхп

    Если есть необходимость в загрузке документов и изображений на сервер, то ограничиваем размер файлов:

    В противном случае отключаем возможность загружать файлы на сервер:

    Если ваш сервер не использует отправку писем и в почтовой службе вообще нету необходимости, то не будет лишним убрать эту возможность, добавив функцию mail() в список запрещенных:

    После всех манипуляций с файлом php.ini сохраняем его и нам надо применить настройки. В режимах php-cgi или fastcgi изменения сразу подхватываются, иначе нам придется перезагрузить apache. Сделать это можно посредством командной строки SSH, в зависимости от операционной системы будет надо написать:

    И проверяем работу веб сайта на практике.

    Мануал по настройке безопасности PHP

    Приступим к грамотной конфигурации Apache для защиты конфиденциальных данных от посторонних посетителей. Разновидностей связок предостаточно: от стандартного mod_php до fcgid и fpm, поэтому возможно придётся использовать свои значения для достижения цели.

    Первоочередной задачей у нас будет использование разграничение пользователей, а точнее назначение отдельной группы и пользователя сервису апач. По дефолту такое не выставляется, поэтому создадим нового непривилегированнного юзера:

    Не забываем добавить пользователя в конфиг:

    Выставляем права доступа для файлов дабы избежать постороннего вмешательства:

    Повышение уровня защиты Apache

    Открываем файл apache2.conf (можно сделать следующей командой):

    И добавляем следующие строки для запрета доступ к системным папкам через директиву allow, deny:

    Рекомендуется поддерживать версии программного обеспечения в актуальном состоянии — это касается не только CMS сайта, но и модули и оболочку сервера. Поэтому не ленитесь проверять наличие обновлений и устанавливать последние версии. И не забывайте про резервные копии, если что пойдёт не так. Также не стоит держать лишние расширения, неиспользуемое лучше удалять или отключать. Просмотреть установленные модули Apache можно командой SSH:

    А выключить ненужный модуль апача:

    Выключаем отображение информации об версии и сервере в заголовках. За это у нас будут отвечать следующие строки в файле конфигурации:

    Не будет лишним избавиться от выполнения опасных скриптов, в следующем коде мы отключаем исполнение CGI, запрещаем SSI (Server-Side Includes) и листинг директорий. Данный участок кода необходимо вставить в конфиг либо можно в главный apache2.conf:

    Устраняем уязвимость перехвата сессий

    Многие хостинги по умолчанию используют один путь для хранения сессий /tmp для всех сайтов. На самом деле это достаточно небезопасно. В качестве простого примера представим такую ситуацию, мы сохраним авторизацию в сессию для пользователя с ид 1 для первого сайта. Но так как у нас одинаковый путь хранилища, то на втором сайте мы можем спокойно быть авторизованными с ид 1. А представьте, если это ещё будет пользователь с администраторскими правами. Конечно, здесь намного больше нюансов, чем в этом упрощенном примере. Однако это открывает возможность к различным манипуляциям сессий чужих сайтов. Именно поэтому стоит разделять пути для сессий, мало того, что это небезопасно, это может привести и к другим проблемам.

    Для php.ini редактируем директиву session.save_path:

    В PHP для этого можно использовать следующий код:

    Если шаред хостинг, то можно прописать в .htaccess следующую строку:

    Не забываем перезагружать апач для применения правок!

    Предотвращаем кражу cookies и упрочняем заголовки

    Сюда же можем добавить защиту от XSS атак:

    Для предотвращения одной из разновидности межсайтового скриптинга CROSS-SITE TRACING (XST) следует включенное по умолчанию значенение trace:


    Полезным будет добавить запрет сниффинга контента — таким образом можно защититься от атак подмены MIME типов файлов. По аналогии добавляем следующую строку:

    Если Вы когда-нибудь проверяли вебсайт сканером уязвимостей от Acunetix, то довольно часто встречается слабая угроза под кодовым именем Clickjacking Attack (или угон клика). Если на сайте не планируется использование ифреймов (iframe) вообще, то можно запретить их следующей конструкцией:

    Однако этот вариант слишком категоричен: те же визуальные редакторы не смогут работать. Поэтому лучше будет разрешить только для внутренних вставок:

    На крайний случай при необходимости разрешить доступ с определенных ресурсов советую использовать следующий синтаксис:

    Современные браузеры поддерживают Content Security Policy — технологию защиты от атак XSS, кликджекинга, подмены данных и других уязвимостей, реализованных уже в самом браузере, и с надеждой с включением в будущем в консорциум WC3. Некоторые тесты безопасности, в частности от Mozilla Firefox достаточно критично относится к отсутствию таких заголовков. На практике хватает пока проблем: это и поддержка браузерами, и не всегда корректная работоспособность (косячит почему-то именно мозилла, что самое забавное), так и противоречивость директив. Если взять самый простой пример и установить только подгрузку с собственного сайта, это будет выглядеть так:

    Но наверняка процентов на 90 Вы столкнетесь с ошибками в консоли и неработоспособностью сайта. Это могут быть ошибки встроенных (inline) скриптов и стилей:

    для которых придется дописывать отдельные правила типо

    Так и подгрузка с других доменов вызовет ворох ошибок:

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

    К сожалению, этот вариант мало, что добавит к безопасности, однако не должен при этом вызывать конфликтов.

    Если объединить все заголовки вместе, то суммарно можно добавлять следующий код:

    Повысить устойчивость к ддос-атакам

    Для снижения риска Denial of service attack — атак от переполнения ресурсов ограничим размер HTTP запросов:

    Не будет лишним уменьшить время ожидания сервера, по умолчанию значение составляет 300 секунд:

    В стандартной конфигурации Apache поддерживается большой список методов передачи HTTP: OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT, на практике обычно нужны только GET, HEAD, POST. Поэтому оставим только их, данный код необходимо вставлять между тегами .

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

    Высказывайте свои пожелания в комментариях, надеюсь всё достаточно подробно изложил. А о дальнейших трюках в сфере безопасности речь пойдет уже в следующих материалах!

    8 способов защитить ваше веб приложение

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

    Виды уязвимостей PHP

    Правила написания безопасного кода на PHP

    1. Блокирование вывода ошибок
      Для этого достаточно в программном коде задать или в файле добавить строку
    2. Использование сложных паролей для доступа к административным страницам
      Для этого достаточно использовать многозначные пароли, не имеющие семантического значения (например, К7O0iV98dq).
    3. Логирование критических действий пользователя
      Не обеспечивает защиту напрямую, но позволяет выявить взломщиков и определить уязвимости, которые они использовали. Для этого действия пользователя и переданные им данные, которые касаются критических моментов работы системы, достаточно записывать в обычный текстовый файл.
      Пример функции логирования и её работы:
    4. Закрытие доступа к модулям сайта
      Обеспечивает защиту от попыток просмотра их содержимого или выполнения. Для этого достаточно в файле настроить доступ к файлам модулей при помощи конструкций и .
      Например, мы закрываем доступ ко всем модулям с расширением , кроме файла :
    5. Отключение возможности задания глобальных переменных
      Для этого достаточно в настройках сервера задать или в файле добавить строку . Использование проблему не решит так, как переменные задаются до начала выполнения скрипта.
    6. Отключение возможности использования удаленных файлов
      Для этого достаточно в настройках сервера задать . Это обеспечивает частичную защиту от PHP-инъекций, но не полную, так как взломщик может передавать не ссылку на файл с программным кодом, а сам программный код. Для полной защиты от PHP-инъекций необходимо дополнительно использовать фильтрацию поступивших данных. Иногда данную меру защиты невозможно использовать из-за особенностей работы проекта (нужно обращаться к удалённым файлам).
    7. Фильтрация поступающих данных
      Обеспечивает защиту от большенства уязвимостей. Универсального решения не существует. Желательно использовать проверку по «белому» списку символов в совокупности с проверкой на запрещённые слова. «Белым» называется список разрешенных символов. В этот список не должны входить опасные символы, например, . К запрещённым словам можно отнести: , а также html-теги.
      Пример фильтрации поступающих данных:
    8. Проверка на загрузку файла при помощи HTTP POST
      Обеспечивает защиту от PHP-инъекций через загрузку файлов. Для обеспечения этого загруженные на сервер файлы необходимо проверять функцией или перемещать функцией . Данный вид защиты можно не использовать, если отключена возможность задания глобальных переменных.
    9. Экранирование символов кавычек данных, передаваемых в базу данных
      Обеспечивает защиту от SQL-инъекций. Наиболее оптимальным методом является обработка всех поступивших не числовых данных с помощью функции . Можно так же использовать автоматическое экранирование, поступающих данных. Для этого достаточно в файле добавить строку , но этот способ не является надёжным, так как может привести к двойному экранированию.
      Пример экранирования кавычек с помощью функции :
  • Преобразование специальных символов в html-сущности перед выводом
    Обеспечивает защиту от XSS. Для этого данные, введенные пользователем, которые могут содержать нежелательные html-тэги, при выводе достаточно обработать функцией . Данный вид защиты можно не использовать, если фильтрация поступающих данных отсеивает опасные html-тэги.
  • Как видите создание продуманной системы безопасности скриптов не такое трудоёмкое дело как кажется.
    Данная статья не претендует на роль учебника по безопасности скриптов, но Я надеюсь, что она подтолкнёт php-программистов использовать более продуманные методы защиты.

    Как защитить сайт от вирусов и взлома

    Цель взлома и заражения сайта вирусами — всегда получение материальной выгоды либо через манипуляции с данными, либо через использование ресурсов хостинга. Чтобы сохранить всю важную и конфиденциальную информацию от несанкционированного применения, а сам сайт оградить от эксплуатации сторонними лицами, необходимо надежно защитить ресурс.

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

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

    Как вирусы попадают на сайт

    Чтобы понять, как защищать, важно знать, откуда берутся вирусы. Основные пути заражения:

    • скачивание и установка непроверенных программ с внедренными вредоносными элементами, цель которых — перехват доступа к протоколам CMS и/или FTP с их дальнейшей обратной отправкой;
    • посещение зараженных порталов;
    • автоматический или ручной подбор логина и пароля злоумышленниками, используемые для входа на сервер или CMS, и заражение изнутри с помощью прописанного кода;
    • использование шаблонов, плагинов и других компонентов с уязвимыми местами и дырами, через которые можно управлять ресурсом;
    • действия пользователей, оставляющих вредоносный контент (ссылки, файлы);
    • размещение рекламы от непроверенных источников и партнеров;
    • доступ через специальные файлы внутри сайта, например, adminer.php. Это утилита для быстрого доступа к базе данных, позволяющая при подборе пароля подключиться и заполучить доступ.

    Помимо этого, взломать сайт можно из-за халатности специалистов, их неопытности или недостатка знаний, неправильного хранения информации. Не стоит исключать и прямую передачу сотрудниками (умышленно или неумышленно) конфиденциальной информации сторонним людям.

    Что может получить взломщик и последствия от взлома сайта

    Разработчики, продавцы вредоносного ПО и хакеры при взломе или заражении сайта вирусами получают доступ к важной информации и могут использовать ресурсы хостинга:

    Что получат Чем грозит вам
    Пароли Частичная или полная потеря контроля над ресурсом, финансами и базой данных
    Клиентская база (email пользователей и другие данные) Рассылка пользователям спама для получения материальных выгод
    Платежные данные пользователей Заманивание клиентов на подставные страницы для кражи учетных записей от аккаунтов банков, платежных систем и сервисов для получения доступов, паролей, конфиденциальных данных, которые нужны для успешного проведения финансовых операций. Это убытки и потеря доверия клиентов
    Возможность использовать сайт для рекламы На страницах веб-ресурса будет появляться реклама, приносящая доход злоумышленникам, а вам неудобства и возмущения пользователей
    Возможность проведения атак на другие сайты Ресурс используется в качестве прокси-сервера, через него осуществляют атаки для заражения других сайтов и получения хранящейся там информации. Так, взломщики подсаживают агентов-ботов и с их помощью проводят DDOS или брутфорс-атаки на ресурсы-жертвы.

    Взлом менее защищенных «соседей»: иногда на хостинг-аккаунте размещают несколько сайтов на различных CMS. При этом одни могут быть защищены, а другие — иметь уязвимые места, скомпрометировав которые легко добраться до защищенного ресурса Доступ к мобильным редиректам С сайта идет перенаправление на сервисы и wap-click партнерские программы, предлагающие платную подписку за услуги или товары Управление сайтом и перенаправление пользователей на зараженные страницы Внедряется код для перенаправления посетителей на специальную страницу. Если на компьютере или телефоне пользователя есть слабые места, то его устройство заражается трояном, а после в него подгружаются более серьезные вредоносные коды.

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

    Помимо потери финансов, баз данных, контроля над управлением ресурса, подмены контента и появление клонов, владельцы взломанного сайта сталкиваются с такими последствиями:

    • ощутимое сокращение трафика из-за потери доверия и ухудшения репутации;
    • санкции со стороны поисковых систем: роботы регулярно мониторят безопасность ресурсов для выявления вирусов и предотвращения заражения устройств пользователей. Если вредоносные компоненты есть — в сниппете появляется отметка: Так выглядит отметка о возможной угрозе

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

    • потеря денежных средств владельцев или клиентов.

    Виды взлома сайта

    Для создания грамотной и эффективной защиты, важно знать, какие способы для проникновения и заражения используют хакеры. Ниже рассмотрим самые частые атаки.

    SQL-инъекция

    Цель: получить доступ к информации из баз данных. Так, злоумышленник получает возможность просматривать, изменять, добавлять, удалять данные, записывать и скачивать локальные файлы.

    Как реализуется: на странице с первоначальным SQL-запросом код составляется таким образом, что при выполнении одного действия, выполняется то, что изначально в нем не заложено. При этом код не нарушает структуру запроса. SQL-инъекции возможны, если не проверять принятые от пользователя сведения.

    Уязвимые места: вредоносные коды часто содержатся в формах подписки, оформления заказа, обратного звонка, регистрации, поиска по сайту и подобных.

    Шеллы

    Цель: полный доступ к сайту.

    Как реализуется: через уязвимые места атакующий оставляет коды, внедряет программы или скрипты, обеспечивающие доступ к командной строке, файлам, данным. Например, почти у каждой CMS в административной панеле есть файловый менеджер, но проверяют его безопасность единицы. Хотя у него есть полные права на запись новых файлов на сайт. И если обратиться по прямой ссылке именно на файл-менеджер, то в старых системах открывается диалог для загрузки файла на сервер.

    Уязвимые места: все формы для ввода данных, легкие пароли, использование небезопасных соединений, в том числе и общественные Wi-Fi.

    XSS-атака

    Цель: получение доступа к cookies и возможность сделать сайт неработоспособным.

    Как реализуется: через ввод данных от пользователей отправляется вредоносный код.

    Уязвимые места: формы регистрации, подписки, обратного звонка, заявки на заказ, чаты, комментарии.

    Взлом через FTP или SSH

    Цель: получить доступ к админке.

    Как реализуется: войти в административную панель можно двумя способами. Первый — через подбор пароля к FTP-клиенту. Второй — перехват SSH-трафика.

    Уязвимые места: ненадежные пароли — короткие, простые, с личными данными, а также установка непроверенных файлов и отсутствие антивируса, который смог бы их проверять. В итоге подобрать пароль дело нескольких часов, а загруженные файлы содержат вредоносные коды, отслеживающие передачу информации по FTP и SSH. Плюс ко всему, использование ненадежных и незашифрованных соединений.

    Взлом phpMyAdmin

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

    Как реализуется: подбором логина и пароля к формам входа. Адрес инструмента практически всегда фиксированный — имя_сайта/myadmin или имя_сайта/phpmyadmin. Стоит набрать его и откроется форма авторизации, для которой подобрать пароль, чаще всего, вообще не проблема из-за очень простых комбинаций.

    Уязвимые места: расположение формы для авторизации на стандартном адресе, плюс простой пароль.

    Взлом через соседей по хостингу

    Цель: контроль над управлением сайта, получение материальной выгоды, доступ к конфиденциальным данным, в том числе к контактам и номерам платежных карт.

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


    Уязвимые места: незащищенные соседи по хостингу.

    Брутфорс панели администратора

    Цель: получить доступ к системным файлам, резервным копиям, всем данным, файловой системе для кражи конфиденциальных сведений, воровства контента или его полного удаления, размещения вредоносного кода.

    Как реализуется: когда у хакеров не получается взломать CMS, они могут начать искать менее защищенные места. Для этого подбираются пароли и логины для входа в административную панель сайта.

    Уязвимые места: форма авторизации в админку и очень легкие данные для входа. Простые комбинации цифр, даты, последовательное введение букв согласно раскладке клавиатуры попадают в топ популярных и вычисляются за 2–3 часа.

    Уязвимости в скриптах плагинов и CMS

    Цель: получить полный доступ ко всем данным сайта, воспользоваться конфиденциальной информацией, загрузить шелл-код и взять контроль над аккаунтом, закрыв его для владельца.

    Как реализуется: если разработчики допустили ошибку или решили, что «и так сойдет», злоумышленники могут найти пробоину и воспользоваться ее, чтобы прописать вредоносный код или украсть данные.

    Уязвимые места: открытый доступ к хостингу, бесконтрольное использование подключений, форма авторизации.

    Dos и Ddos-атаки

    Цель: заблокировать сайт, остановить работу некоторых функций, «закрыть» отдельные страницы, а как следствие — подорвать репутацию компаний.

    Потенциальными жертвами Ddos-атак являются госучреждения, новостные порталы, сайты коммерческих и некоммерческих организаций, интернет-магазины. Любой ресурс может попасть под этот вид атак.

    Как реализуется: Ddos-атаки — не взлом сайта как таковой. Атака заключается в одновременном поступлении большого количества запросов на сервер, которое он не в состоянии обслужить. Результат — ресурс виснет и перестает работать.

    Уязвимые места: слабый сервер, незащищенное соединение.

    Как бороться с каждым из видов атак рассмотрим ниже.

    Во всех методах защиты сайта указан вид атаки, которому он может противостоять или снизить риск возникновения.

    Методы защиты сайта

    Все способы защиты делят на три большие группы:

    Все методы защиты ресурса

    Защита CMS

    CMS — система управления сайтом и всей информацией на нем. Это сердце, а потому защита начинается именно с него. Используйте следующие методы и максимально обезопасьте ресурс.

    SSL-сертификат

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

    • доменное имя;
    • сведения про юридическое лицо, на которое оформляется сертификат;
    • реальное местонахождение владельца;
    • срок действия;
    • основные данные о поставщике сертификата.

    С помощью этой подписи вы подтверждаете, что домен принадлежит реальной компании, а владелец использует секретный ключ законно.

    Сайт защищен SSL от фишинг атак, целью которых — получение паролей, кодов, данных для входа, номеров кредитных и депозитных карт, личных данных:

    • SQL-инъекций;
    • шеллов;
    • взлома phpMyAdmin;
    • взлома через соседей по хостингу.

    SSL-сертификат в обязательном порядке необходим банкам, платежным системам, сервисам, работающим с персональными данными. Именно он предоставит защиту транзакций и перекроет доступ к любой конфиденциальной информации.

    Где получить

    Есть два способа получить SSL-сертификат: обратиться к провайдеру, предоставляющему поддержку SSL, или в центр сертификации.

    Например, для сайтов, размещенных на сервисах Google (Google Мой бизнес, Blogger), а также для тех, кто сотрудничает с партнерами (Bluehost, Shopify, Weebly, Wix), сертификат выдается бесплатно.

    Если обращаться в специализированные компании для сертификации, придется потратиться — до 100 $.

    Читайте подробнее в статье о SSL-сертификатах.

    Обновление движка сайта

    Одно их важных условий безопасного функционирования ресурса — регулярное обновление CMS. Каждая новая версия движка устраняет ошибки и закрывает незащищенные места, через которые легко взломать сайт.

    Обновление поможет избежать атак через уязвимость в скриптах плагинов и CMS. Это не гарантирует 100-процентную защиту, но минимизирует риск возникновения такого форсинга, как:

    Важно! Обновление происходит либо автоматически за счет самой системы, либо вручную. Отслеживать новые версии можно с помощью рассылки или RSS-канала.

    Чаще всего CMS уведомляет пользователей о доступных версиях при входе в админку:

    Вот так это выглядит у WordPress

    Нажав на Please update now (Обновить сейчас), вы запустите автоматическое обновление. Для успешного полного апгрейда система перенаправит вас на страницу Updates для обновления плагинов, если это нужно.

    Другие CMS, как правило, так же уведомляют пользователей о новых версиях. Посмотреть и обновить движок можно через настройки в системе. Принцип у всех платформ одинаков. Но существуют еще системы, в которых автоматическое обновление отсутствует, например, SimplaCMS, OkayCMS. Учитывайте это при работе.

    Использование проверенных скриптов

    Часто в плагинах и программах находятся трояны в виде вируса, бэкдора или шелла.

    Как защитить сайт от взлома? Только тщательная проверка источников и использование лицензированных компонентов помогут избежать «падения» ресурса. Если загружаете программы и скрипты, выбирайте только официальные источники разработчиков и поставщиков.

    Пароли

    Не используйте простые пароли или пароли с соцсетей, которые злоумышленники смогут подобрать программно.

    Важно!

    Создавайте пароли с помощью программ генераторов паролей (пример такого сервиса описан далее в статье) и меняйте их с регулярностью в несколько месяцев.

    Плагины и скрипты защиты

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

    Приведем несколько примеров популярных плагинов для WordPress с ценами актуальными на август 2020 года:

    Плагин, предлагающий 30 видов защиты от:

    • SQL-инъекций;
    • шеллов;
    • XSS;
    • взлома через FTP или SSH;
    • взлома phpMyAdmin;
    • взлома через соседей по хостингу;
    • взлома через уязвимости в движке;
    • брутфорс-атак и ботов, ищущих уязвимости ресурса;
    • защита от Ддос-атак на сайт.

    iThemes Security находит бреши и подбирает способы их устранения, отражает любые атаки на файловую систему и базы данных, информируя вас об изменениях. К тому же плагин может менять IP пользователя, адрес админки, входа на сайт, путь к папке wp-content. С его помощью создаются бэкапы для быстрого восстановления утраченных данных.

    Панель инструментов для настройки безопасности iThemes Security

    Такая защита сайта от вирусов есть в бесплатной и платной версиях от 80 до 200 $ в год в зависимости от количества ресурсов.

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

    Доступен обзор уведомлений, статистика атак, статус.

    • SQL-инъекции;
    • шеллы;
    • XSS;
    • взлом через FTP или SSH;
    • взлом phpMyAdmin;
    • взлом через соседей по хостингу;
    • взлом через уязвимости в движке;
    • а также обеспечивает защиту сайта от Ddos-атак.

    Стоимость — бесплатно, но есть премиум версия за 8,25 $ в месяц.

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

    Противостоит и выявляет:

    • Dos и Ddos-атаки;
    • SQL-инъекции;
    • шеллы;
    • XSS-атаки.

    Так выглядит страница, если были обнаруженные добавленные, измененные, удаленные файлы

    Плагин совместим с WordPress, Joomla, Drupal, Magento и другими платформами и CMS.

    Стоимость — от 200 $ в год.

    Чтобы найти плагин для своей CMS, ищите по запросу «плагин для защиты сайта + название вашей CMS. Среди вариантов выбирайте наиболее популярный, с хорошими отзывами, широким функционалом и максимальным набором отображаемых атак.

    Защита сервера

    Для того чтобы сервер не был доступен для злоумышленников, выполняйте следующие меры предосторожности:


    1. Ограничивайте пользователей в правах на доступ к базе данных.

    Не давайте непроверенным людям прав доступа и пароли для входа в административную панель, возможность добавлять HTML-код. Проверяйте правильно ли настроены права к директориям, важным файлам и скриптам.

    Если говорить о настройке прав на чтение и запись в папках, то большинство хостингов рекомендует права уровня 755 для папок и 644 только для файлов.

    Это позволяет максимально эффективно защитить файлы: никто, кроме владельца, не может редактировать, перемещать, удалять файлы.

    Права настраиваются с помощью хостинга или при подключении к сайту по SSH или FTP. В программе FileZilla нажимаем правой кнопкой мыши на нужном файле, и выбираем пункт «Права доступа к файлу».

    Пример настройки прав по FTP. Шаг 1

    А дальше указываем нужные права:

    Пример настройки прав по FTP. Шаг 2

    Это поможет бороться с:

    Кроме того, защита сайта от взлома PHP и через брутфорс панели администратора также будут на высоком уровне.

    2. Отслеживайте, что вводит пользователь на сайте.

    Справятся с этим специальные плагины, например, Wordfence.

    Это поможет защитить сайт от спама и XSS-атак, которые часто проводят через формы обратной связи, заказа, подписки и так далее.

    3. Постоянно меняйте пароли.

    А создавая новый, учтите основные принципы надежности:

    • сложный набор цифр и букв;
    • очень длинный пароль — от 30 символов;
    • уникальные комбинации, нигде не применяемые;
    • не используйте имена, даты дней рождений, клички животных, телефонные номера, номера карт, паспортные данные;
    • не сохраняйте пароли в панели браузера или FTP клиенте, в почте или мессенджерах.

    Создать сложный пароль помогут онлайн-генераторы. Вот так, например, работает «Генератор Безопасных Паролей»:

    Галочками отмечаете параметры и жмете «Генерировать пароль»

    Изменить пароль можно через админку. Например, путь в WordPress — «Пользователи» → «Ваш профиль» → «Новый пароль»:

    Изменение пароля в WordPress

    Поменять пароль в других платформах можно по такому же принципу.

    Регулярная смена пароля сведет к минимуму такие попытки атак:

    • SQL-инъекции;
    • шеллы;
    • взлом phpMyAdmin;
    • взлом через брутфорс панели администратора;
    • взлом через FTP или SSH.

    4. Создавайте бэкапы сайта: с помощью панели управления хостинга, плагинов или обращения к техподдержке хостинга.

    У большинства хостингов есть возможность делать копии сайта. Для этого нужно зайти в панель управления, найти эту функцию и следовать инструкциям. Возьмем для примера хостинг ukraine.com.ua:

    Во вкладке «Аккаунт» есть кнопка «Резервное копирование» Можно заказать новую копию или восстановить предыдущую версию Важно выбрать тип бэкапа И базу данных

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

    Например, для WordPress есть такие плагины, как BackUpWordPress, BackWPup, BackupBuddy, Backup by Supsystic и очень много других. Выбирайте в зависимости от ваших задач, размера сайта, функциональных возможностей.

    Проще всего сделать бэкап — обратиться к техподдержке хостинга и попросить настроить автоматическое копирование данных.

    Совет! Создавайте бэкапы регулярно: хотя бы 2 раза в месяц и обязательно перед каждым обновлением движка.

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

    5. Переименуйте папки и файлы: вместо стандартных названий используйте придуманные.

    Это не поможет защитить сайт от хакерских атак, но как минимум усложнит злоумышленникам задачу.

    6. Закройте доступы к хостингу, кроме своего IP.

    Сделать это можно через панель управления, вкладки с сайтами и ограничения. Так, чтобы закрыть сайт от всех и оставить его доступным определенным клиентам, нужно прописать код в файле .htaccess:

    Order deny,allow
    deny from all
    allow from xxx.xxx.xxx.xxx,

    где xxx.xxx.xxx.xxx — ваш IP.

    А таким кодом мы говорим, системе, какие IP не следует «пропускать»:

    Order allow,deny
    allow from all
    deny from xxx.xxx.xxx.xxx

    Важно!

    Учтите, ваш IP должен быть статическим. Если он поменяется, у вас также возникнут проблемы с доступом на сайт.

    7. Установите двухфакторную верификацию на вход или сделайте вход с подтверждением личности.

    Функции устанавливается только на хостинге. Бывает вход по смс или вход через PUSH-сообщение.

    Защита ПК

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

    Постоянная защита веб-сайтов гарантирует сохранность данных и информации. Важно обновлять программы до актуальной версии.

    Из рейтингов Роскачества и ICRT и СофтКаталог самыми надежными и популярными антивирусами являются:

    Как узнать заражен ли вирусом сайт?

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

    Проверяют состояние ресурса онлайн-сервисами, вручную через сканирование антивирусом на ПК и через панель вебмастеров в Яндексе и Google.

    Онлайн-сервисы

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

    Рекомендуем:

    Antivirus-alarm работает на основе известных и зарекомендовавших себя антивирусов — NOD32, Symantec, Avast, DrWeb, Panda, Kaspersky и других. Проверка бесплатная.
    Сервис проверяет, обеспечивает защиту сайта от ботов, лечит и создает бэкапы. Процесс занимает мало времени: у нас на это ушло 5 минут.

    Проверка проходит так:

    1. Заходите на главную страницу сервиса, нажимаете «Проверка».
      В окошко вводите адрес сайта, анализ которого требуется.
    2. Ввод адреса ресурса для проверки

    Ввод адреса ресурса для проверки
    Ждете результат:

    Результат проверки Antivirus-alarm

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

    Проверка занимает не больше 3-х минут:

    1. Заходите на главную страницу — выбираете тип проверки. Мы анализировали ресурс полностью.
    2. Результат предоставляется в таблице. Подробности можете посмотреть в «Деталях»:

    Результаты представлены в общей таблице

    По такому же принципу работают и другие онлайн-сервисы:

    ReScan.Pro — бесплатный сканер сайтов. Проверяет наличие вирусов, попытки взлома и другие проблемы безопасности:

    • скрытые редиректы;
    • зашифрованные скрипты;
    • шпионские вставки;
    • вирусные загрузки;
    • спам-атаки;
    • несанкционированное перенаправление;
    • ошибки на сайте.

    Можно настроить автоматическую проверку ресурса.

    2ip.ru — сервис, помимо поиска вредоносного ПО и попыток взлома, роверит:

    • скорость интернет-соединения;
    • время загрузки страниц;
    • информацию о домене, системе управления сайтом;
    • доступность ресурса и посещаемость;
    • отдельные файлы на наличие вирусов;
    • SSL и другое.


    Sucuri не только защитит ваш сайт от возможных атак, но и просканирует его на наличие спам-ссылки, дорвей-страниц, вредоносных скриптов, изменения в коде. Кроме того, сервис проверяет актуальность вашей CMS.

    Узнав слабые места, вы защитите ресурс от несанкционированных атак.

    Важно!

    Сервисы работают с ошибками: результаты порой бывают неактуальными, и найденные вредоносные коды не являются вирусами.

    А потому обязательно перепроверяйте данные и то, что сервис определил как угрозу. В этом случае вам поможет или разработчик сайта, или человек, который знает систему. Например, специалист по WordPress, Joomla, Bitrix и так далее. Процесс достаточно трудоемкий, так как иногда файлы, которые помечены как вирус, — новый функционал сайта, и сразу сложно определить выполняется что-то вредоносное или же это нужная функция на сайте.

    Антивирусы на компьютере

    Чтобы проверить сайт таким способом, нужно скачать все файлы с ресурса и каждый прогнать через обычный антивирус, который установлен у вас на компьютере.

    Покажем процесс проверки на примере Avast:

      Откройте антивирус, перейдите на вкладку «Защита» → «Антивирус»:

    Панель управления антивирусом Avast
    Кликните на «Выборочное сканирование» и выберите нужную папку или файл:

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

    Процесс проверки
    Дождитесь результатов сканирования:

    Если антивирус найдет проблемы, он предложит автоматически их исправить.

    Панель вебмастеров в Яндекс и Google

    Узнать, есть ли вирусы на сайте, помогут и панели вебмастеров в Яндекс и Google.

    Сообщения о взломе в Яндекс Вебмастере будут доступны на вкладке «Диагностика» → «Безопасность и нарушения»:

    Проверка на взлом и нарушения на сайте в Яндекс Вебмастер

    Проверка в Google Вебмастере доступна на вкладке «Проблемы безопасности»:

    Способ проверки в Google Search Console

    Что делать, если сайт заражен?

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

    1. Сразу же и в обязательном порядке изменить пароли к файлам и административной панели. Это можно сделать в настройках админки.

    2. Проверить доступы и права, закрыть их при необходимости. Возможность управлять сайтом предоставляется через Яндекс Вебмастер или Google Search Console, закрыть доступ также можно через эти сервисы.

    3. Поиск вредоносного кода можно проводить самостоятельно через Вебмастер (описывали выше) либо обратиться в техподдержку хостинга.

    4. Проверить .htaccess из корня папки. Часто через этот код злоумышленники перенаправляют посетителей на другие сайты. Как правило, он имеет такой вид:

    RewriteEngine On
    RewriteCond % .*yandex.* [OR]
    RewriteCond % .*google.* [OR]
    RewriteCond % .*bing.* [OR]
    RewriteRule ^(.*)$ http://имя_стороннего_сайта/index.php?t=6 [R=301,L].

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

    Удалить опасное ПО также помогут антивирусы и онлайн-сервисы: после проверки каждый инструмент предлагает «лечение» и дальнейшую защиту.

    5. Если не удалось стереть вредоносные коды и удалить вирусы, воспользуйтесь бэкапом, который вы делаете как минимум 2 раза в месяц, для восстановления утраченных или измененных информации и данных. Это один из самых надежных способов вернуться к исходной точке.

    6. Обратиться в техподдержку. Там подскажут решение именно вашей проблемы.

    Чтобы атаки не повторялись, важно узнать пути заражения и уязвимости на сайте. Помогут в этом сервисы, рассмотренные в статье. А для создания безопасного ресурса и противостояния атакам используйте комплекс методов защиты из нашего материала.

    Защита WordPress от взлома: 10 способов повысить безопасность своего сайта

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

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

    10 советов по защите

    Я решил оформить эту статью в виде своеобразного чек-листа, куда вы при необходимости сможете заглянуть. Здесь я объясню некоторые принципы повышения безопасности, которые заключаются в конкретных действиях.

    Регулярно обновляйте свою операционную систему

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

    То же касается и других операционных систем. MacOS или даже GNU/Linux могут содержать уязвимости, о которых знает лишь ограниченное количество людей.

    Если вы пользуетесь сайтом со своего смартфона, нужно поддерживать в актуальном состоянии и его.

    Используйте антивирусное ПО

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

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

    Именно поэтому я рекомендую вам установить себе на компьютер и мобильный телефон антивирусные программы. Даже хотя бы бесплатные. Так риск того, что кто-то вас взломает, существенно снизится.

    Не посещайте левые сайты и не вводите там данные

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

    Не надо посещать подозрительные сайты и уж тем более там что-то вводить.

    Установите сложный пароль на WordPress

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

    Можно воспользоваться генератором, который встроен в сам WP. Для этого перейдите в меню “Пользователи” – “Ваш профиль”. Далее прокрутите страницу вниз и нажмите на кнопку “Создать пароль” в пункте “Управление учетной записью”.

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

    Установите другой логин

    По умолчанию во многих версиях WordPress используется стандартный логин “Admin”. Хакеры знают это и им намного легче подбирать пароли через автоматические приложения-переборщики. Чтобы обломать их намерения, вы можете изменить стандартный логин на какой-то другой.

    Для этого необходимо перейти в меню “Пользователи” – “Добавить нового”. В открывшихся полях необходимо заполнить все данные аккаунта, изменив только сам логин. Тут вы можете дать волю фантазии и ввести что-то неоднозначное, состоящее из большого количества символов и т. д.

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

    После этого вы должны удалить старый аккаунт администратора. Залогиньтесь через новый аккаунт, снова зайдите в меню “Пользователи”, наведите курсор на аккаунт с логином “Admin”, после чего кликните на надпись “Удалить”. Далее нужно подтвердить свои намерения. Все, теперь у вас будет аккаунт с новым логином, который будет сложнее узнать.

    Регулярно обновляйте свою версию WordPress

    Как и в случае с операционной системой, вы должны поддерживать свою платформу в актуальном состоянии. Каждое обновление может исправлять потенциальные известные уязвимости. Если вы не будете своевременно обновлять WordPress, то велика вероятность, что этими самыми уязвимостями кто-то воспользуется.

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

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

    Перед обновлением не забудьте выполнить следующий пункт.

    Делайте резервные копии

    Если даже вас кто-то взломает и решит “поиздеваться” над вашим ресурсом, то при наличии свежей резервной копии вы сможете быстро все восстановить, сменить пароли от аккаунтов и т. д.

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

    Этот модуль носит название “UpdraftPlus WordPress Backup Plugin”, его можно установить прямо из каталога WordPress. Часть интерфейса этого плагина переведена на русский язык, поэтому проблем с использованием быть не должно.

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

    Устанавливайте шаблоны и плагины только из достоверных источников

    Очень часто вирусы проникают на сайты через паленые версии плагинов и шаблонов. Люди, чтобы сэкономить, скачивают взломанные nulled-версии с разных второсортных форумов или складчин. После этого их чудесным образом взламывают или зашивают код, который вредит пользователям.

    Чтобы избежать таких последствий, вы должны четко разделять надежные источники от ненадежных. Nulled-версия может быть надежной в исключительных случаях, в основном авторы таких сборок преследуют собственные интересы.


    Поэтому плагины и различные шаблоны лучше скачивать из стандартного каталога WordPress либо же покупать их в известных магазинах вроде того же ThemeForest или WP Shop. Также вы можете скачивать все это с официального сайта WordPress – ru.wordpress.org, там есть все то, что и в каталогах.

    Используйте зашифрованное соединение

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

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

    Отсутствие защищенного протокола может быть опасно не только для пользователей, но и для самого сайта, потому что есть очень много уязвимостей, которые работают исключительно через HTTP-протокол. Если на вашем сайте будет корректный SSL-сертификат, то все эти уязвимости просто не будут работать.

    Более подробно о том, как установить SSL-сертификат на сайт я рассказывал в отдельной статье. Рекомендую перейти туда и ознакомиться с этим материалом.

    Используйте плагины, которые повышают защиту

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

    Принцип работы этих плагинов заключается в изменении и добавлении стандартного функционала WP. Например, если ввести правильный логин и неправильный пароль, то WordPress выдаст ошибку, которая напрямую будет указывать на то, что здесь неправильный именно пароль, а логин верный. Таким способом злоумышленники могут узнать ваш логин, даже если вы его поменяли. Им останется просто подобрать верный пароль и все.

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

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

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

    • Wordfence Security – Firewall & Malware Scan

    Отличный плагин, который можно установить прямо из панели управления WordPress. Его же можно скачать с официальных репозиториев.

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

    Также вы можете добавить двухфакторную авторизацию, и пользователь будет вынужден каждый раз вводить код, который будет приходить на мобильный телефон.

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

    У этого плагина есть две версии: бесплатная (ее вы устанавливаете из каталога либо же скачиваете с репозиториев WP) и платная (стоит 99 долларов).

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

    Еще один комплексный модуль для WP, который может обеспечить повышенный уровень безопасности. Здесь есть очень много функций, включая изменение логина администратора, смену префиксов в таблицах БД, изменение названий папок, сканер и т. д. Это прямой конкурент предыдущему плагину. В каких-то моментах он его превосходит, в каких-то наоборот.

    • All In One WP Security & Firewall

    Неплохое расширение, которое имеет много различных функций. Здесь есть инструменты по защите аккаунтов, баз данных, файлов сайта и т. д. Этот плагин также можно установить прямо из каталога WordPress. Достаточно просто перейти в нужный раздел панели управления и ввести его название.

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

    Заключение

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

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

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

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

    А на этом все. Следите за безопасностью своего сайта и своевременно делайте резервное копирование.

    Защита сайта от sql инъекций

    Перед тем как мы поговорим о том, как выполняется защита сайта от sql инъекций, нам нужно сначала разобраться что это такое и почему этот тип атак настолько опасен. Большинство современных сайтов уже делают все, чтобы на их страницах не было таких мест, через которые злоумышленник мог бы выполнить эту атаку, но все же иногда такие проблемы случаются даже на популярных ресурсах или в часто используемых движках.

    Сегодня мы разберем что такое sql инъекция, как она работает, а также как с ней бороться, как на уровне языка программирования, так и с помощью создания различных помех для злоумышленника с помощью веб-сервера. Это тоже достаточно эффективно.

    Что такое SQL инъекция?

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

    И тут появляется возможность для SQL инъекции. Если пользователь введет в поле определенный запрос, то он сможет создать свой запрос к базе данных. Это позволит ему делать практически все, что угодно, украсть ваши данные, стереть базу, получить доступ к паролям пользователей, добавить новых пользователей и все что ему будет угодно.

    Например, вот так выглядит SQL запрос запроса id статьи при поиске:

    SELECT id,title,content FROM posts WHERE title LIKE ‘%запрос_пользователя%’

    А теперь представьте, что пользователь вместо ключевых слов из статьи введет такую комбинацию:

    1%’; DROP TABLE posts LIKE ‘%;

    И в результате получится такой себе полностью рабочий запрос, которого вы совсем не ожидали:

    SELECT id,title,content FROM posts WHERE title LIKE ‘%1%’; DROP TABLE posts LIKE ‘%%’

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

    Защита сайта от sql инъекций на уровне PHP

    Защита от sql атак может выполняться различными способами. Первое, на что стоит обратить внимание и что очень важно — это чтобы программист уже во время написания кода занимался экранированием кавычек с помощью таких функций, как mysql_real_escape_string или mysqli_real_escape_string. Если каждая переменная, которая используется в запросах к базе будет профильтрована ими, программистом или на уровне CMS, то никаких проблем не возникнет.

    Но почему же на протяжении последних 14 лет все еще случаются атаки на SQL? Все просто. Программисты ленивы, а делать небезопасные запросы к базе так просто, в то время как безопасные — более сложны. Во всяком случае, сложнее, чем небезопасные.

    Защита на уровне веб-сервера

    Не всегда есть возможность исправить все недоработки в коде. Например, популярный движок Drupal имеет более 20 000 строк кода, WordPress — 60 000, а Joomla — 180 000. Было бы нецелесообразно все это переписывать. Но можно поступить по-другому. Сначала мы отфильтруем все значения из переменной REQUEST в самом начале скрипта. Вставьте этот код после подключения базы данных:

    Для PHP 7 вам нужно будет использовать функцию mysqli_real_escape_string, поскольку расширение mysql было удалено из этой версии языка. Для экранирования кавычек используется лишь функция clean и все что ниже нее. То что выше применяется для совместимости с версиями PHP ниже 5.4. В них была настройка Magic Quotes, которая при включении экранировала все кавычки. Чтобы наш скрипт все не портил мы сначала все убираем экранирование если она включена.

    Теперь у вас есть дополнительная защита на уровне PHP. Осталось еще позаботиться про защиту на уровне веб-сервера. Если вы используете Nginx, то можно добавить такие правила в вашу секцию server:

    set $block_sql_injections 0;
    if ($query_string

    «union.*select.*\(«) <
    set $block_sql_injections 1;
    >
    if ($query_string

    «union.*all.*select.*») <
    set $block_sql_injections 1;
    >
    if ($query_string

    «concat.*\(«) <
    set $block_sql_injections 1;
    >
    if ($block_sql_injections = 1) <
    return 403;
    >

    Здесь мы отфильтровываем все запросы, которые содержат слова select, concat вместе с кавычками. Это явный признак, что пользователь пытается выполнить SQL инъекцию, а значит его запрос нужно заблокировать.

    Также вы можете блокировать подозрительные адреса на уровне веб-сервера Apache, например, выбрать самые часто употребляемые ключевые слова SQL. Правда, это опасно, поскольку могут быть заблокированы и запросы обычных пользователей. Добавьте в вашу секцию VitualHost такие строки:

    RewriteCond % [^a-z](declare¦char¦set¦cast¦convert¦delete¦drop¦exec¦insert¦meta¦script¦select¦truncate¦update)[^a-z] [NC]
    RewriteRule (.*) — [F]

    Но это еще не полное решение, здесь можно пойти дальше. Эта блокировка не защищает от SQL инъекций, выполняемых с помощью POST или RESTful запросов. Еще можно активировать модуль mod_security:

    sudo a2enmod mod_security

    Здесь тоже есть несколько правил, которые защищают от инъекций. Но желательно использовать еще и более комплексный подход.

    Разделение базы данных

    Чтобы сделать вашу базу данных более безопасной, вы можете разделить ее на несколько частей. В области информационной безопасности существует такое понятие, как принцип минимальных привилегий. Суть принципа состоит в том, что программа или пользователь должны иметь доступ только к тому, что им нужно и нечему больше. Например, будет разумно хранить данные о кредитных картах пользователя и форумы в разных базах данных. Особенно, если формы используют устаревшую версию phpBB. Это своеобразная дополнительная защита sql injection.

    Анализ запросов перед приложением

    Еще один вариант — это использования более сложных систем защиты. Это может быть аппаратное решение, которое работает поверх iptables или ipfw или же система обнаружения вторжений на сервере HIDS, такая, как OSSEC. Но такое решение намного сложнее, чем нужно и не предназначено для решения нашей задачи. Можно использовать специальные брандмауэры веб-приложений, с помощью которых, в том числе, выполняется защита от SQL инъекций. Это такие свободные решения, как ModSecurity или IronBee.

    Выводы

    Нет идеального решения или волшебной палочки, с помощью которой бы получалась стопроцентная защита сайта от sql инъекций, хотя PHP стремится быть все более защищенным. Начиная с версии 7.0 была удалена поддержка расширения MySQL. Теперь необходимо переходить на MySqli или PDO. И это хорошо, потому что эти расширения делают проще использование данных с подготовленными операторами. Хотя для этого все еще требуется написать несколько строк.

    Существует множество способов выполнения SQL атак, но до тех пор, пока разработчики не будут писать правильный код, а на веб-серверах не будут на максимум использоваться средства защиты, эти атаки не исчезнут из списка ТОП 10 OSWAP. Настройте вашу систему так, чтобы защитить свои данные и базы данных.

    Как защитить веб-приложение от взломщиков

    Существуют различные рекомендации, которых следует придерживаться каждому, кто специализируется на разработке веб-приложений. Приведем наиболее распространенные и в то же время эффективные методы.

    1. Первый метод защиты веб-приложений заключается в использовании средств, позволяющих анализировать систему защиты. Часто специалисты делают это вручную, однако есть приложения и даже онлайн-сервисы, которые помогут облегчить задачу. Например, с помощью SSL Server Test можно проанализировать SSL-конфигурацию сервера. Сервис One Button Scan просканирует DNS, SSL, заголовки ресурса на наличие эксплоитов. Для проверки эксплоитов конфигураций, созданных на ASP.NET, можно использовать ASafaWeb. Будьте внимательны, некоторые сервисы выполняют публикацию отчетов о проверках на всеобщее обозрение. В первую очередь, важно исправлять критические моменты. Рекомендуется повторить сканирование после исправления всех замечаний. Вы можете воспользоваться GET и POST запросами, изменяя их значения, чтобы самостоятельно попробовать осуществить взлом собственного ресурса. Для перехвата значений HTTP-запросов обычно используется прокси-сервер отладки (как вариант, Fiddler). Для получения доступа к страницам, требующим аутентификацию, можно изменять данные URL или любые Cookie.
    2. Использование HTTPS необходимо в том случае, когда пользователи осуществляют передачу персональных данных на сервер (например, информация о дебетовой карте, адреса страниц и т.д.). Если происходит установка Cookie, которые могут быть отправлены на сервер, злоумышленники непременно этим воспользуются и подделают запрос. Так может быть перехвачена сессия. Вот почему использование HTTPS необходимо для всех страниц ресурса. SSL-сертификат может быть сгенерирован с помощью Let’s Encrypt. Также без проблем активируется поддержка HTTPS для сервера. Отметим, что сейчас Google будет регулярно присылать предупреждения каждому пользователю, который заходит на HTTP. Это должно сподвигнуть владельцев ресурсов массово перейти на HTTPS. Кроме того, для защиты от взлома рекомендуется постоянно обновлять программное обеспечение. Это послужит хорошей профилактикой.
    3. Пароли лучше хранить в виде хеша. Специалисты рекомендуют использовать алгоритмы для одностороннего хеширования. Подойдет SHA. Даже в том случае, если злоумышленнику удастся взломать сайт, а также получить хешированные пароли, то он все равно не получит исходную информацию, ведь хеш невозможно обратить.

    Процесс хеширования

  • Для контроля надежности пароля необходимо сделать валидацию такой, чтобы минимальная длина была исключена, также необходимо отслеживание на совпадение с логином, адресом ресурса и электронной почтой.
  • Важно отслеживать сообщения об ошибках. Она не должна содержать техническую информацию, все сведения важно сохранять в лог-файле сервера. Помните, что подробная информация поможет злоумышленникам провести комплексную атаку. В этом деле помогает мониторинг ошибок, существует немало полезных средств, которые упростят данную задачу. К примеру, Sentry может автоматически отслеживать ошибки в коде и позволяет контролировать действия пользователей в режиме реального времени.
  • Цукерберг рекомендует:  Tkinter - Python GUI + Threads
    Понравилась статья? Поделиться с друзьями:
    Все языки программирования для начинающих