В безопасности как Форт-Нокс: как защитить сайт от хакеров
Опубликовано: 2021-10-05В этой статье мы предлагаем руководство о том, как защитить веб-сайт от взлома и использования в незаконных целях.
Интернет-безопасность - это огромный красный флаг на бескрайнем синем небе Интернета. И хотя слова «онлайн-безопасность» могут сначала напомнить о преследовании и защите пользователей в Интернете, ущерб, который отсутствие безопасности веб-сайта может нанести бизнесу, также является значительным. Владельцы веб-сайтов, которые сокращают расходы на безопасность, платят своей репутацией и, как следствие, несут финансовые убытки.
Содержание:
- Почему каждому владельцу сайта нужно инвестировать в безопасность
- О каких уязвимостях идет речь?
- Недостатки впрыска
- Раскрытие конфиденциальных данных
- Атаки межсайтового скриптинга (XSS)
- Сломанная аутентификация
- Неправильная конфигурация безопасности
- Сломанный контроль доступа
- Небезопасная десериализация
- Недостаточное ведение журнала и мониторинг
- Внешние объекты XML (XXE)
- Использование компонентов с известными уязвимостями
- Как создать безопасный сайт
- Сколько стоит защита веб-сайта?
Почему КАЖДОМУ владельцу сайта нужно инвестировать в безопасность
У некоторых владельцев веб-сайтов есть такие мысли: на моем веб-сайте нечего украсть. Я не храню никаких пользовательских данных или платежных реквизитов. Мне не нужны дорогие и современные системы безопасности.
Однако это просто наивно. Существует ряд причин, по которым ваш веб-сайт может быть взломан, даже если на нем нет личных или финансовых данных. Вот список того, как хакеры могут использовать практически любой незащищенный сервер:
- Требовать выкуп. Даже если вы не храните пользовательские данные на своих серверах, хакеры могут захватить их и потребовать у вас деньги, чтобы вернуть их.
- Для использования в качестве ретранслятора SMTP (простой протокол передачи почты). SMTP - это протокол, используемый для массовой доставки электронных писем, например информационных бюллетеней. Хакеры могут использовать ваши серверы для рассылки спама или программ-вымогателей.
- Для майнинга биткойнов.
- Для использования в DDoS-атаках в составе ботнета.
- Чтобы изменить или удалить данные на вашем сайте. Причины этого могут быть разными.
И это только верхушка на поверхности. Помимо угроз, исходящих от третьих лиц (хакеров и других преступников), существуют также угрозы, связанные, например, с возможными ошибками со стороны сотрудников, управляющих вашим веб-сайтом. На самом деле внутренняя безопасность так же важна, как и внешняя, если не больше.
Итак, как я могу защитить свой сайт от хакеров? ты спрашиваешь.
Что ж, вы должны учитывать и устранять ряд уязвимостей.
О каких уязвимостях идет речь?
Одной из наиболее авторитетных организаций в отрасли, занимающихся кибербезопасностью, является Open Web Application Security Project, сокращенно OWASP. Фонд OWASP отслеживает и регулярно обновляет свой список широко распространенных проблем веб-безопасности. Ниже приведены распространенные проблемы безопасности в их списке (в произвольном порядке) на день написания этой статьи и несколько советов по снижению опасности для вашего веб-сайта.
Недостатки впрыска
Недостатки внедрения относятся к базам данных и вызваны плохой проверкой ввода. Когда ваша система принимает вводимые пользователем данные, но не может должным образом их фильтровать, это делает систему уязвимой - хакеры могут использовать это, чтобы внедрить свой код в вашу систему (отсюда и название). Этот внедренный код может привести к тому, что ваш веб-сайт будет выполнять команды, которые вы не собирались выполнять, заставляя его отображать конфиденциальные данные или даже передавать контроль над веб-сайтом хакеру.
Самый популярный тип инъекционной уязвимости связан с базами данных SQL, но на самом деле уязвимости инъекций ими не ограничиваются. Запросы XPath, операторы LDAP и сценарии XML также могут быть уязвимы для внедрения.
Как обезопасить сайт от инъекционных ошибок? Две из лучших практик включают использование очистки запросов SQL и параметризованных запросов. Есть API, которые позволяют это делать.
Если вы не хотите реализовывать эти вещи вручную, вы можете использовать инструмент ORM (объектно-реляционное сопоставление) для вашего предпочтительного языка программирования. Мы используем ActiveRecord, потому что он тесно связан с экосистемой Rails.
Ни один из вышеперечисленных вариантов не является полностью надежным, но в наши дни он настолько близок к надежной защите.
Раскрытие конфиденциальных данных
Конфиденциальные данные - это любые данные, которые могут быть использованы для эксплуатации человека тем или иным способом:
- Имя
- Номер социального страхования
- Номер водительских прав
- Информация о кредитной карте
- Логины и пароли
- Дата рождения
- Информация о состоянии здоровья
- Девичья фамилия
- Имена родителей
Он может даже включать любую информацию, которая является ответом на секретный вопрос, например, о вашем банковском счете. Кто бы мог подумать, что имя вашего первого питомца может считаться конфиденциальной информацией, верно?
Защитить веб-сайты от раскрытия конфиденциальных данных сложно, поскольку такое раскрытие сложно предсказать и обнаружить. Но есть профилактические меры, которые можно предпринять. Конфиденциальные данные, если они хранятся на веб-сайте, никогда не должны храниться в виде обычного текста ; он должен быть зашифрован с использованием новейших технологий и передаваться только по защищенным каналам.
Если ваш веб-сайт облегчает какие-либо транзакции или обычно имеет дело с конфиденциальными данными, он должен использовать шифрование SSL. Это новейшая и лучшая доступная технология шифрования. SSL-шифрование помогает безопасно передавать данные между браузером и сервером или между серверами. Кроме того, многие пользователи будут искать HTTPS в адресе вашего веб-сайта, чтобы узнать, является ли он безопасным. Этот заголовок вы получаете, когда получаете сертификат SSL.
Также обычно рекомендуется хранить данные в облаке. Однако не думайте, что простое хранение в облаке автоматически сделает данные безопасными. Тем не менее, все защитные меры должны быть реализованы, и вы должны регулярно контролировать и обновлять безопасность.
Атаки межсайтового скриптинга (XSS)
Уязвимости XSS в некотором роде похожи на недостатки внедрения, поскольку они позволяют хакерам воздействовать на страницы вашего веб-сайта, внедряя неродной код. В случае XSS мы говорим о внедрении JavaScript. JavaScript, внедренный хакером, может изменять содержимое страницы, вставлять ссылки на вредоносные веб-сайты и отправлять изначально скрытые данные обратно хакеру, что приводит к раскрытию конфиденциальных данных.
Ruby on Rails и React имеют встроенную защиту от XSS. Другой вариант для защиты от XSS и внедрения мер - использование HTTP-заголовка ответа Content-Security-Policy.
Сломанная аутентификация
Первоначально названный «Сломанная аутентификация и управление сеансом», этот недостаток связан с уязвимостями во время аутентификации пользователя и управления сеансом, как видно из названия. Это включает раскрытие учетных данных для входа и ряд проблем с идентификаторами сеанса:
- Слабые идентификаторы сеанса
- Идентификаторы сеанса отображаются в URL-адресах
- Идентификаторы сеанса, которые не меняются между входами в систему
- Передача идентификаторов сессий через незащищенные соединения
Идентификаторы сеанса напрямую связаны с личностью пользователя, так же, как учетные данные, и, следовательно, их перехват может привести к захвату учетной записи пользователя. Это приводит к разного рода ущербу для ваших пользователей, от финансового и репутационного до связанного со здоровьем.
Чтобы обезопасить свой веб-сайт от атак аутентификации, потребуйте многофакторную аутентификацию : например, потребуйте постоянный пароль и одноразовый пароль, доставленный на мобильное устройство пользователя.
Google использует возможность двухфакторной аутентификации : чтобы открыть свою учетную запись Google в веб-браузере, вам необходимо сначала ввести свой пароль. Если это правильно, вам также необходимо открыть приложение Google на своем телефоне и выбрать номер, отображаемый в веб-браузере.
Более очевидные методы защиты веб-сайта от неработающей аутентификации включают:
- обеспечение сложности пароля - «Ваш пароль должен состоять не менее чем из 8 символов и включать как минимум одну цифру, одну заглавную букву и одну строчную букву».
- ограничение попыток входа в систему, до которых учетная запись приостанавливается (на определенное время или пока пользователь не свяжется с администраторами сайта) и предупреждение администраторов
Неправильная конфигурация безопасности
Неверная конфигурация безопасности - это обширная тема, так как это может произойти на любом этапе и с любой частью вашего веб-сайта: базой данных, сетью, сервером, фреймворком, хранилищем или чем-либо еще. Слабые стороны конфигурации могут быть использованы для получения доступа к функциям системы. В зависимости от того, где находится уязвимость, такой доступ может быть частичным или полным. Примеры неправильной конфигурации:
- Вы не отключили учетные записи / пароли по умолчанию.
- Есть ненужные и неиспользуемые функции.
- Разрешения на доступ к облаку настроены ненадежно.
- В ваших сообщениях об ошибках отображается конфиденциальная информация, такая как имена пользователей, пароли или адреса электронной почты.
Первое, что нужно сделать, чтобы избежать неправильной конфигурации, - это удалить все неиспользуемое - функции, образцы, фреймворки и т. Д. Следующим шагом является обеспечение одинаковой конфигурации для всех сред и регулярная проверка ее производительности. Продуманная архитектура обязательна.
Сломанный контроль доступа
Контроль доступа - это контроль над тем, что пользователи могут и не могут делать. Когда это не выполняется должным образом, это означает, что пользователи могут выполнять действия, которые могут непредсказуемо повлиять на ваш сайт. Один из способов использования нарушенного контроля доступа - просмотр и редактирование профилей и данных других пользователей. Другой - доступ к премиум-функциям, не платя за них и не зарабатывая их. Еще один - доступ к страницам администратора из учетной записи без прав администратора (или, что еще хуже, без учетной записи вообще).
Лучший способ убедиться, что контроль доступа к вашему сайту работает - это ручное тестирование. Никакие инструменты автоматического тестирования не могут гарантировать, что контроль доступа работает должным образом.
Нарушение управления доступом также может быть результатом злоупотребления механизмом совместного использования ресурсов между источниками (CORS), который может предоставить доступ к API-интерфейсам с ограниченным доступом. По этой причине рекомендуется как можно меньше использовать CORS.
Небезопасная десериализация
Сериализация - это процесс преобразования объекта в двоичный код. Десериализация логически противоположна. Оба эти процесса регулярно проводятся в веб-разработке, поэтому важно обеспечить защиту от их использования в атаках.
Хорошая новость в том, что десериализация - это не то, что обычный пользователь или ваш сотрудник может сделать случайно . Это отчасти и плохая новость - атаки десериализации всегда преднамеренные и, следовательно, порочные. Они также приводят к наиболее серьезным проблемам, таким как запуск удаленного кода, вход на веб-сайт без аутентификации и инициирование DoS-атак (отказа в обслуживании).
Самый простой способ защитить ваш сайт от атак такого типа - запретить сериализованные объекты, созданные пользователями. Если это невозможно сделать, следующий лучший вариант - использовать криптографические подписи для проверки целостности.
Использование JSON, YAML или XML может затруднить использование уязвимостей десериализации для хакеров, поскольку эти форматы не являются двоичными.
Недостаточное ведение журнала и мониторинг
Эта уязвимость кажется довольно очевидной: если вы не отслеживаете свой веб-сайт и не регистрируете все ошибки и неудачные попытки входа в систему или выполнения функций контроля доступа , вы, по сути, соблазняете хакеров атаковать ваш веб-сайт. В любой войне, цифровой или реальной, первая атака обычно заключается не в победе, а в том, чтобы увидеть, с чем вы столкнулись. И если есть легкий путь, воспользуйтесь им. Отсутствие регистрации и мониторинга такого зондирования приведет к тому, что ваша система вообще пропустит атаку или обнаружит ее, когда она уже произошла и нанесен ущерб.
Ведение журнала особенно важно для сайтов электронной коммерции, поскольку они имеют дело с деньгами и финансовыми данными пользователей.
Чтобы сделать ваш веб-сайт более безопасным, правильно регистрируйте все неудачные попытки и убедитесь, что эти журналы хранятся и копируются за пределами ваших локальных серверов. Используйте системы автоматического оповещения о таких сбоях и, если возможно, приостанавливайте работу учетных записей, которые постоянно генерируют такие сбои. Жизненно важно иметь системы оповещения в реальном времени, чтобы вы могли немедленно отреагировать на возможное нарушение.
Внешние объекты XML (XXE)
Мы уже пару раз упоминали XML (Extensible Markup Language). Это гибкий язык, который делает его простым в использовании и широко распространенным. Процессоры XML анализируют данные из документов XML. Если ваш веб-сайт основан на XML и принимает загрузки XML без проверки, он может быть уязвим для атак.
Для защиты целостности вашего сайта рекомендуется следующий набор действий:
- Отключить обработку DTD (определение типа документа).
- Ограничьте или запретите загрузку XML или, если это невозможно сделать, принудительно внесите в белый список - положительную проверку входных данных на стороне сервера.
- Регулярно обновляйте процессоры и библиотеки XLM.
- Предотвратить сериализацию конфиденциальных данных.
- По возможности используйте JSON или аналогичные простые форматы.
- Внедрите брандмауэры веб-приложений (WAF) и шлюзы безопасности API.
Использование компонентов с известными уязвимостями
Нет ничего идеального, и любой компонент, который вы используете в своем программном обеспечении, обязательно будет иметь некоторую уязвимость, известную или неизвестную. В ответ на обнаруженные и распознанные уязвимости программное обеспечение обновляется, чтобы покрыть эти уязвимости или уменьшить любой ущерб, который может быть вызван их использованием. Некоторые слабые места наносят незначительный ущерб, но другие могут быть опасны для вашего бизнеса.
Чтобы предотвратить взлом веб-сайта из-за известных уязвимостей, важно регулярно проверять наличие обновлений и обновлять все компоненты, используемые на вашем веб-сайте. Это может быть утомительной задачей для программного обеспечения с большим количеством компонентов и веб-сайтов. Вот почему эксперты по безопасности рекомендуют регулярно проверять и удалять ненужные и неиспользуемые библиотеки, функции, файлы и другие компоненты. И, конечно же, используйте только компоненты из официальных источников. Не соблазняйтесь веб-сайтами, которые распространяют обычно платное программное обеспечение бесплатно - его можно изменить, чтобы взломать ваш сайт.
Как создать безопасный веб-сайт: итоги
Чтобы изложить всю техническую информацию на языке непрофессионала, вот советы по безопасности, которым нужно следовать, если вы хотите создать безопасный веб-сайт:
- Найдите надежного веб-хостинга.
- Регулярно обновляйте все программное обеспечение, фреймворки и библиотеки, используемые на вашем веб-сайте.
- Удалите со своего сайта все ненужные функции и компоненты.
- Настройте системы для проверки ввода как на стороне браузера, так и на стороне сервера.
- Следите за информацией, отображаемой в сообщениях об ошибках.
- Настройте проверку надежности пароля для пользователей.
- Всегда используйте надежные пароли для своих серверов и административных страниц и регулярно меняйте их.
- Купите сертификат SSL / используйте протокол HTTPS.
- Настройте правильное ведение журнала сбоев и ошибок.
- Регистрируйте транзакции аудита (особенно если у вас веб-сайт электронной коммерции).
- Внимательно следите за журналами.
- Используйте облачные серверы, но тем не менее защищайте свои данные.
- Всегда шифруйте конфиденциальные данные с помощью новейших технологий.
- Пусть ваша группа безопасности следит за появляющимися обновлениями безопасности, а также за новыми угрозами, чтобы иметь возможность своевременно реагировать на атаки.
Сколько стоит защита веб-сайта?
Это вопрос, на который нет однозначного ответа. Стоимость безопасности сильно зависит от технического стека, который использует ваш сайт. Кроме того, есть стоимость обновлений, которая будет зависеть от того, сколько компонентов вам нужно обновить, как часто вы их обновляете и сколько стоит обновление каждого из них. Эти затраты должны рассчитываться вашими разработчиками индивидуально.
Мы настоятельно рекомендуем учитывать безопасность с самого начала разработки . Если оставить вопрос безопасности до конца, это может (и, скорее всего, приведет) к необходимости внести изменения в ядро вашего сайта, что может быть даже дороже, чем создание системы безопасности с самого начала.
Заключение
Если вы сами являетесь разработчиком, владеете компанией-разработчиком или имеете собственную команду разработчиков, вы можете поставить перед ними все эти задачи. Однако, если у вас еще нет технических специалистов и вы хотите знать, как создать безопасный веб-сайт с помощью поставщика услуг аутсорсинга, мы рекомендуем найти компанию-разработчика, которая может не только создать веб-сайт, но и поддержать его. Практически невозможно предсказать каждую уязвимость, но способность своевременно реагировать на любое нарушение может спасти ваш сайт от худшей судьбы.
Разработчики Mind Studios обладают опытом применения передовых методов обеспечения безопасности и идут в ногу с новейшими тенденциями. Если у вас есть вопросы о том, как защитить свой сайт от хакеров, свяжитесь с нами для получения бесплатной консультации .
Авторы Светлана Вараксина и Артем Червичник