Как защитить сайт от заражения
В статье приведен ряд профилактических рекомендаций, которые помогут защитить ваш сайт от заражения.
Как помешать злоумышленникам разместить вредоносный код на своем сайте
Используйте надежное программное обеспечение.
Загружайте дистрибутивы веб-приложений и расширения/плагины для CMS из проверенных источников.
Регулярно обновляйте CMS и серверное ПО, следите за новостями об уязвимостях используемой CMS.
Регулярно проводите аудит безопасности серверов.
После установки CMS удаляйте установочные и отладочные скрипты.
Используйте сложные пароли от веб-серверного ПО (FTP, SSH, административные панели хостинга и CMS).
Сложный пароль содержит не менее 11 символов и включает в себя буквы в разных регистрах, цифры, и специальные символы.
Не используйте одинаковые пароли для доступа к разным сервисам.
Даже самые надежные пароли рекомендуется менять раз в три месяца, чтобы обезопаситься от случайной утечки.
Не сохраняйте важные пароли в веб-браузерах, файловых менеджерах, а также FTP-, SSH- и прочих клиентах.
Следите за безопасностью рабочих компьютеров.
На всех компьютерах, с которых ведется работа с сервером (машины вебмастера, администратора, контент-менеджера, менеджера по продажам и т.д.) должны быть установлены антивирусы с поддержкой регулярных обновлений. Также необходимо своевременно обновлять операционную систему и прикладные программы.
Контролируйте данные, вводимые пользователями.
Фильтруйте HTML-разметку во вводимых пользователями данных, которые могут встраиваться в код страниц сайта.
Получая данные от пользователя, проверяйте на сервере, допустим ли их размер, входят ли переданные значения в допустимые списки и интервалы.
Никогда не вставляйте полученные от пользователей данные напрямую в вызовы
eval()
, SQL-запросы или в преобразование типов. Всегда проверяйте и очищайте полученную информацию от потенциально опасных элементов.Не оставляйте в рабочей версии кода параметры, введенные для отладки, эксперименты с новой или отключенной функциональностью.
Используйте WAF (Web Application Firewall).
Контролируйте права доступа пользователей, в частности, предусмотрите защиту от межсайтовой подделки запросов (CSRF).
Ограничьте доступ к панелям администрирования CMS и БД (например, phpMyAdmin), а также:
к резервным копиям кода;
к конфигурационным файлам;
к метаданным систем контроля версий (например, к каталогам
.svn
или.git
).
По возможности скрывайте версии серверного ПО (CMS, веб-сервера, интерпретатора сценариев, СУБД).
Настраивайте файрволы и сетевую инфраструктуру так, чтобы были разрешены только соединения, необходимые для работы.
Старайтесь избежать кликджекинга. Простейшие проверки, предназначенные для этого:
Вывод HTTP заголовка
X-FRAME-OPTIONS SAMEORIGIN
илиX-FRAME-OPTIONS DENY
.- Javascript-конструкции вида
илиif (top.location != window.location) top.location = window.location
top.location = 'http://example.com'
Рекомендуем хостингам регулярно проверять поддерживаемые сайты с помощью Safe Browsing API Яндекса или API Вебмастера.
Как не дать разместить вредоносный код пользователям сайта
Если посетители вашего сайта могут загружать файлы или текст на ваш сайт, вредоносный код может оказаться в загруженном контенте (умышленно или случайно).
Защищайтесь от ботов.
Для защиты от роботов-взломщиков можно использовать специальные плагины к CMS или искать IP-адреса пользователей в черных списках.
Проверяйте данные, которые могут ввести пользователи.
Не давайте возможности вставлять JavaScript-код внутри script, в тегах или ссылках.
Не вставляйте напрямую на страницы сайта код в тегах iframe, object, embed, и не подгружайте файлы .jar, .swf и .pdf (с их помощью сайт может генерировать такие теги автоматически).
Поддерживайте «белый список» разрешённых HTML-тегов, чтобы без дополнительной обработки отбрасывать все остальные.
Проверяйте вставленные пользователями ссылки, например, через Safe Browsing API Яндекса.
Как не разместить вредоносный код случайно
Проверяйте используемое ПО.
Скачивайте дистрибутивы CMS, виджеты, библиотеки только с официальных сайтов или из проверенных источников.
Если какой-то дистрибутив приходится скачать с сомнительного сайта, обязательно проверьте наличие в нем вредоносного кода.
Внимательно изучайте код любых дополнительных компонентов, которые вы хотите добавить в CMS.
Будьте осторожны с рекламными блоками и кодом.
Вставляйте на страницы своего сайта только те рекламные блоки, которые были предоставлены проверенными рекламными системами.
Прежде чем подключить сайт к новой партнерской системе, ищите отзывы о ней и примеры распространяемого контента.
Избегайте «уникальных предложений» (подозрительно высокая плата за счётчики и блоки, монетизация мобильного трафика).
По возможности встраивайте на свои страницы статический контент (ссылки и картинки). Избегайте подгружаемых элементов script и iframe. Flash, Java и ActiveX-компоненты принимайте только в виде исходного кода, который можно проверить и скомпилировать самостоятельно.
Не используйте партнёрские программы со скрытыми блоками.
Внимательно контролируйте доступы к служебным интерфейсам. Доступом к сайту должны обладать только те, кому доступ необходим и пока он необходим.
Отзывайте доступ специалистов, выполнявших разовые работы, предыдущих владельцев, людей, не ответственных за работу сайта (например, специалистов по маркетингу или руководителей).
Привлекая к работе над сайтом посторонних людей, старайтесь получить какие-нибудь рекомендации. После окончания работ — отключайте их учетные записи или меняйте пароли.
Если ваш сайт статический, некоторые партнёрские системы могут запросить доступ по FTP, чтобы самостоятельно менять баннеры. Предоставлять такой доступ опасно: если база данных партнерской системы будет взломана, злоумышленники получат прямой доступ к файлам на вашем сайте.
Ищите надежный и качественный хостинг. Не все хостеры качественно обеспечивают безопасность своих серверов, а некоторые могут сознательно заражать сайты клиентов.