Как добиться безопасности сайтов
В материале освещаются основные варианты уязвимости различных веб-приложений, а также способы их профилактики. Все уязвимости можно разделить на три группы:
- Организационная. Причина – человеческий фактор. Такая уязвимость может быть устранена при помощи соблюдения некоторых правил работы с веб-сайтом или путем использования специального программного обеспечения.
- Проектирование. Эта уязвимость относится непосредственно к приложению. Для устранения используется учет возможности атаки во время разработки. Большая часть подобных уязвимостей можно устранить на уровне базового функционала, благодаря чему минимизируется человеческий фактор.
- Эксплуатация. В этом случае атака может быть осуществлена на уровне инфраструктуры или сервера. Решать подобные уязвимости предстоит администраторам сайтов.
Аутентификация и доступ к веб-сайту
1. Нестойкие пароли. Относятся к типу организационной уязвимости.
Использование максимально простых паролей (номер телефона, имя, дата рождения, последовательный набор цифр и т. п.) – это самый короткий путь для хакеров, которые могут получить доступ к управлению сайтом, просто перебирая пароли. Для безопасности рекомендуется применять пароли, полученные путем автоматического генерирования. Единственное условие – человек должен суметь его запомнить, потому что запись на бумажке – не лучший вариант.
Если пароль придумывает человек, можно посоветовать сложные мнемонические пароли – например, начальные буквы известной песни в другой раскладке клавиатуры, причем несколько букв следует изменить на определенные символы или цифры.
Некоторые считают, что всех перехитрили, когда ставят пароль по умолчанию, например, такой: admin/admin или root/ничего.
Неплохой вариант – заставлять менять временные пароли во время первого входа.
2. Перехват пароля. Относится к типу организационной и эксплуатационной уязвимости.
Ваш пароль могут перехватить в момент его передачи от пользователя к серверу. Чтобы этого не произошло, при работе с сервером следует использовать защищенное соединение – например, https или ftps.
Далее, перехват пароля может произойти с использованием «фишингового» сайта. Что это значит? Сайт в браузере пользователя незаметно заменяется на идентичный. После того, как данные введены в форму входа, хакер становится владельцем вашего пароля. Как можно обезопаситься? Нужно иметь «подписанный сертификат сайта». В этом случае компания подтверждает подлинность сайта, о том же свидетельствует и подписанный сертификат. Такая услуга является платной – примерная стоимость составляет около 800 долларов в год и зависит от таких факторов, как престиж компании, которая поставляет услуги, и степень защиты. К сожалению, не редкость сайты, владельцы которых не считают нужным оформить подобающим образом сертификат.
3. Кража пароля. Принадлежит к типу организационной уязвимости.
Ваш пароль могут украсть, воспользовавшись вредоносным ПО или социальной инженерией. Чтобы обезопасить себя от подобной кражи, достаточно придерживаться некоторых правил:
* Не хранить и не передавать выбранный пароль в открытом виде: не отправлять его по электронной посте, по скайпу или через ICQ. Это не нуждается в разъяснениях: вы понимаете, что переданный таким образом пароль сохраняется в архиве почты или в истории месенджера.
* Применять разнообразные антивирусные ПО.
* Не запоминать выбранные пароли в FTP клиенте или в браузере. Существуют вирусы, которые внедряют в сайт вредоносный код, воспользовавшись сохраненными FTP паролями.
* Время от времени пароль необходимо менять.
Важно: каждый пользователь, который имеет доступ к сайту, должен завести индивидуальный логин и пароль. В таком случае, даже после увольнения сотрудника, можно быть уверенным в безопасности и защите информации.
Веб-студии весьма сильно страдают от оседающих в архивах и в хистори паролей от клиентских веб-сайтов. Еще один неприятный момент – мастер-пароль, являющийся достоянием разработчиков, менеджеров, их близких, а также всех, кто когда-либо работал в этой компании.
Чтобы избежать подобных неприятностей, можно перенести авторизацию на сервер студии: каждый разработчик не знает никаких паролей, кроме собственного, а разрешения на вход можно получить централизованно. Кроме того, такой подход позволяет видеть, кто именно предпринял какое-либо действие – например, удалил с сайта новость.
4. Проактивная защита. Относится к типу проектирования.
Обезопаситься необходимо на уровне архитектуры веб-сайта, тогда утеря пароля будет нестрашна.
Ограничения по IP. Необходимо ограничить по IP доступ в административный интерфейс: следует сделать так, чтобы войти в него можно было только из внутренней сети компании. Если необходимо работать дома, в командировке и т. п., в обязательном порядке указывается – кто именно, в какой промежуток времени и с какой целью работал с сайтом.
Captcha. Использование символов с картинок, или Captcha, значительно снижает риск проникновения в административный интерфейс вирусов или каких-то иных вредоносных программ.
Одноразовые пароли. Можно использовать введение временного дополнительного пароля. В этом случае для каждого конкретного пользователя следует сгенерировать матрицу, состоящую их случайного набора чисел, а во время входа в интерфейс нужно ввести не менее 2 чисел, расположенных в заданном столбце либо колонке. Такой способ является достаточно эффективным и сравнительно недорогим. Благодаря подобному методу снижается опасность перехвата пароля – ведь злоумышленнику известна лишь часть матрицы.
Клиентские сертификаты. Доступ разрешен только тем пользователям, которые имеют клиентский сертификат. Большое значение имеют персональные данные пользователей. Обязательно нужно выключать автоматическое заполнение полей, предназначенные для введения личных данных посетителей. Еще один момент: не следует хранить данные пользователей там же, где и данные сайтов.
Уязвимости приложения
В этом разделе мы рассмотрим некоторые основные уязвимости, которым подвержен код приложения, а также способы их ликвидации и сведение к минимуму во время разработки «человеческого фактора».
1. SQL injection. Категория: проектирование.
Эта уязвимость дает возможность хакеру изменить запрос к базе данных, который используется обычно. Применяя эту уязвимость, злоумышленник может скачать из базы не предназначенные для него данные, что даст ему возможность войти, к примеру, в административный интерфейс. Еще взломщик может подменить информацию в БД – что-нибудь удалить или добавить, тем самым нанеся серьезный вред работе компании. Чтобы устранить указанную уязвимость, необходимо при сборке запроса экранировать данные. Очень хорошо, если изначально устранена возможность напрямую из кода обращаться к базе. Нужно создать ситуацию, когда работа с БД будет возможна только через специальную библиотеку, которая будет осуществлять требуемые преобразования автоматически.
2. Code injection. Категория: проектирование.
Уязвимость становится возможной, если исполняемый код формируется или подключается с использованием данных, которые вводит пользователь. Чтобы устранить подобную уязвимость, требуется провести дополнительные проверки, использовать специализированные библиотеки и выполнить экранирование.
3. Межсайтовое выполнение сценария. Категория: проектирование.
Эта уязвимость заключается во внедрении взломщиком на сайт html или javascript кода. Причина – недостаточная проверка и преобразование введенной информации. Воспользовавшись данной уязвимостью, злоумышленник может изменить внешний вид веб-сайта до неузнаваемости и даже «украсть авторизацию» - то есть проникнуть в интерфейс, не зная пароля. Для устранения следует принять некоторые меры: экранировать данные при выводе, а лучше всего работает автоматическое экранирование всей информации, которая выводится на страницу.
4. Межсайтовые запросы. Категория: проектирование.
Если вы подверглись данной атаке, то вам угрожает следующее: вы начнете совершать какие-то совершенно ненужные и даже вредные для безопасности сайта действия, сами о том не подозревая. Например, сайт взломщика содержит картинку, адрес которой – вот интересно! – полностью совпадает с адресом удаления раздела. Как только вы попадаете на эту страницу, ваш браузер, естественно, запрашивает URL картинки. Следующий этап – если вы авторизованы в системе, вы можете удалить нужный раздел, даже не подозревая об этом. Чтобы решить эту проблему, необходимо ввести механизм подтверждения, который подразумевает, что вы можете что-то сделать только во время перехода с конкретной страницы. На этой страницы нужно сформировать ссылку с временным кодом, который является уникальным – его валидность должна проверяться страницей, на которой вы и совершаете некое действие.
5. Доступ к скрытым файлам. Категория: проектирование.
Воспользовавшись этой уязвимостью, взломщик получает возможность прочитать на сервере произвольный файл – для этого ему достаточно сформировать запрос особым образом. Решается подобная уязвимость при помощи проверки корректности имени файла при запросе.
6. Выполнение загружаемых файлов. Категория: эксплуатация.
Загружаемые на сервер файлы могут быть выполнены. Такая уязвимость дает возможность взломщику, у которого есть доступ в администраторский интерфейс, воспользоваться им и получить полный доступ к системе. В качестве мер предосторожности обратите внимание на следующие: администратор сервера разрешает записи лишь в определенные директории на сервере; он же должен запретить выполнять скрипты в этой директории.
7. Раскрытие кода. Категория: эксплуатация/проектирование.
Воспользовавшись доступом к исходному коду, а также к разработческим и системным скриптам, преступник может получить дополнительную информацию, нужную ему для взлома.
- Нахождение системных, разработческих и отладочных скриптов в открытом доступе;
- Нахождение в открытом доступе служебных скриптов: программы, которые осуществляются с какой-то периодичностью, вполне могут быть запущены снаружи, благодаря чему может возникнуть большая нагрузка и повлечь за собой выход сайта из строя;
- Исходный код может быть доступен для просмотра. При чиной такой уязвимости часто бывает неправильно настроенная система контроля версий.
8. Переполнение диска. Категория: проектирование.
Воспользовавшись слабой проверкой входных данных или неправильной организацией кэширования, взломщик может расположить на диске или в базе данных массу лишней информации. Это действие приведет к замедлению работы, а если закончится место, система может выйти из строя.
Бесполезные запросы: взломщик помещает на сайте код, который отправляет форму обратной связи, либо использует собственное обращение к данному URL. Такая атака приводит к тому, что жесткий диск или база данных сайта наполняется информацией. Помимо прочих неприятных последствий, нивелируется достоверность проведенного опроса и происходит дезорганизация службы поддержки. Чтобы устранить данную уязвимость, следует включать метки или captcha.
Разрастание кэша. Чаще всего результат сложных выборок сохраняется в памяти или на диске, то есть кэшируется. Делается это с целью сэкономить ресурсы. Формируется кэш на основе входного запроса, иногда – с введением дополнительных параметров. Это не только забивает память и диск, но и нивелирует позитивный эффект кэширования. Чтобы решить подобную уязвимость, следует перед запросом кэша или кэшированием более тщательно проверять данные.
9. Псевдокриптография.
Многие пользователи убеждены, что случайное число и md5 хэш – типичный случай криптографии. В действительности это ошибка: md5 лучше не использовать в целях безопасности. Относительно случайных последовательностей: довольно часто они являются случайными лишь на первый взгляд, а это значит, что ими нельзя пользоваться, к примеру, для карт оплаты.
10. Конфигурация сервера. Категория: эксплуатация.
Для обеспечения безопасности необходима правильная конфигурация сервера, а также постоянное обновление программного обеспечения. Грамотный администратор не пропустит сообщения об уязвимости и обновлении ПО – ведь изо дня в день появляются все новые уязвимости и ошибки.
11. DDOS. Категория: эксплуатация/проектирование.
Эта уязвимость считается одной из самых сложных относительно предотвращения атак. Что происходит? На сервер идет поток запросов, вследствие чего ресурсы заканчиваются, сервер не справляется с возросшей нагрузкой. Такая атака чаще всего направлена из сети компьютеров, зараженных вирусом. Она выполняется при помощи специально созданных программ – умельцы быстро модифицируют их под определенные задачи. DDOS атака может быть куплена любым, кто в состоянии за нее заплатить. Что касается цен – сегодня они держатся в пределах 100-150 долларов за один день атаки. Такие атаки можно распределить в зависимости от уровня грубости:
- Переполнение канала. За счет огромного количества запросов ресурсы сетевого подключения быстро исчерпываются. Чтобы этого избежать, необходимо приобрести более широкий канал (достаточно скорости 10GBps), плюс к этому рекомендуется иметь еще один канал - резервный. Ресурсы сервера можно оградить, фильтруя по порту и используя аппаратные решения.
- SYN-флуд. На особый TCP пакет c флагом SYN ваш сервер, как ожидается, должен ответить пакетом SYN+ACK, а потом дожидаться ответа. Если произведена DOS атака – ответа можно не дождаться. Однако сервер этого не знает и продолжает ждать. Вариант - ‘SYS-reflection` атака: это значит, что SYN пакет отправляется третьему серверу, при этом указывается поддельный IP адрес. В результате с периодичностью в несколько минут будет поступать SYN/ACK пакет. Это необходимо помнить при блокировании по IP. Что делать в таком случае? Вот решения: применение SYN-COOKIE; можно ограничить время, которое тратится на ожидание ответа, а также увеличить число одновременных подключений; можно установить быстрый фронтенд, призванный заниматься обработкой таких запросов – таким образом, сервер приложений освободится; можно вычислить IP адреса, являющиеся проблемными.
- HTTP-флуд. Возрастает нагрузка на сервер приложений. Как решаем? Во-первых, следует отделить реальных пользователей от «ботов», для чего используется установка флагов средствами flash или javascript, captchа, а также установка COOKIE. Во-вторых, хорошо работают специализированные аппаратные и программные средства, которые отслеживают аномалии трафика. В-третьих, пригодятся сервисы по очистке трафика – они отсеивают вредные запросы. Если постараться, можно найти бесплатные сервисы.
Дайджест новых статей по интернет-маркетингу на ваш email
Новые статьи и публикации
- 2024-09-30 » Как быстро запустить Laravel на Windows
- 2024-09-25 » Next.js
- 2024-09-05 » OpenAI рассказал, как запретить ChatGPT использовать содержимое сайта для обучения
- 2024-08-28 » Чек-лист: как увеличить конверсию интернет-магазина на примере спортпита
- 2024-08-01 » WebSocket
- 2024-07-26 » Интеграция с Яндекс Еда
- 2024-07-26 » Интеграция с Эквайринг
- 2024-07-26 » Интеграция с СДЕК
- 2024-07-26 » Интеграция с Битрикс-24
- 2024-07-26 » Интеграция с Travelline
- 2024-07-26 » Интеграция с Iiko
- 2024-07-26 » Интеграция с Delivery Club
- 2024-07-26 » Интеграция с CRM
- 2024-07-26 » Интеграция с 1C-Бухгалтерия
- 2024-07-24 » Что такое сторителлинг: техники и примеры
- 2024-07-17 » Ошибка 404: что это такое и как ее использовать для бизнеса
- 2024-07-03 » Размещайте прайс-листы на FarPost.ru и продавайте товары быстро и выгодно
- 2024-07-01 » Профилирование кода в PHP
- 2024-06-28 » Изучаем ABC/XYZ-анализ: что это такое и какие решения с помощью него принимают
- 2024-06-17 » Зачем вам знать потребности клиента
- 2024-06-11 » Что нового в работе Яндекс Метрики: полный обзор обновления
- 2024-06-11 » Поведенческие факторы ранжирования в Яндексе
- 2024-06-11 » Скорость загрузки сайта: почему это важно и как влияет на ранжирование
- 2024-05-27 » Подборка сервисов для расшифровки аудио в текст
- 2024-05-27 » PostgreSQL 16. Изоляция транзакций. Часть 2
- 2024-05-06 » Как настраивать конверсионные стратегии: работа над ошибками
- 2024-04-22 » Комментирование кода и генерация документации в PHP
- 2024-04-22 » SEO в России и на Западе: в чем основные отличия
- 2024-04-22 » SEO для международного масштабирования
- 2024-04-22 » Как использовать XML-карты для продвижения сайта
Кто мало хочет, тот дешево стоит |
Мы создаем сайты, которые работают! Профессионально обслуживаем и продвигаем их , а также по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.