Безопасность в Nemo.Travel: различия между версиями

Материал из Центр поддержки системы бронировании
Перейти к навигации Перейти к поиску
м (Мария Горшенева переименовал страницу Безопасность Nemo Travel в Безопасность в Nemo Travel)
м (Защита от CSRF)
(не показаны 34 промежуточные версии 4 участников)
Строка 1: Строка 1:
В новой системе Немо предусмотрены механизмы поддержания безопасности и защиты пользовательских учетных записей. Система предусматривает несколько способов верификации пользователей и дополнительной защиты для безопасной аутентификации пользователей, обеспечивающие надежную защиту пользовательских данных.  
+
В системе бронирования {{NameSystemLink}} используются общепринятые механизмы безопасного хранения, передачи и использования данных.
  
=== Верификация пользователя ===
+
== Аутентификация и авторизация ==
  
Для подтверждения авторизации, пользователю необходимо пройти процедуру верификации. Верификация осуществляется при помощи подтверждения email адреса или телефонного номера указанных в профиле пользователя. Запрос на подтверждение можно отправить из раздела в панели администрирования '''«Профиль пользователя»''' или из личного кабинета, вкладки '''«Мой профиль»'''. Рядом с названием полей «Адрес электронной почты» и «Телефон» расположены ссылки «Подтвердить», при нажатии на которые вам будет отправлено сообщение содержащее одноразовый код, действующий в течении 15 минут, на указанный адрес электронной почты или на телефонный номер из поля «Телефон». Далее пользователю предлагается ввести полученный код. После успешного введения кода, около поля отобразится символ указывающий на то, что номер или почтовый адрес был успешно подтвержден. При смене почтового адреса или телефонного номера, статус верификации обнуляется и потребуется провести процедуру еще раз.
+
=== Безопасное хранение паролей ===
При первом входе в систему, пользователю предлагается подтвердить свой электронный адрес или телефон (если у агентства заданы реквизиты для рассылки смс сообщений) а после выбрать тип защиты при входе в систему, данный шаг можно пропустить 5 раз, далее вход в систему будет невозможен без подтверждения своих данных.
 
  
=== Защита пароля===
+
Пароль, который указывается при создании новых учетных записей через административную панель, является временным. При попытке первого входа в систему конечному пользователю будет предложено изменить пароль на отличный от введенного раннее.
В системе реализована система защиты от перебора пароля. После 10 неудачных вводов паролей с одного IP адреса пользователь получит 5 минутную блокировку доступа. По истечению этого времени счётчик неудачных вводов сбрасывается.
 
  
=== Подтверждение IP адреса ===
+
В базе данных пароли хранятся в виде [https://ru.wikipedia.org/wiki/%D0%A5%D0%B5%D1%88%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5 хешей], полученных по алгоритму SHA256 с добавлением случайной [https://ru.wikipedia.org/wiki/%D0%A1%D0%BE%D0%BB%D1%8C_(%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D1%8F) "соли"]. Это является гарантией того, что ваш пароль не будет доступен для чтения ни злоумышленникам, ни сотрудникам {{NameSystemLink}}.  
Для безопасной авторизации пользователя рекомендуется использовать подтверждение IP адреса. Если при включенной проверке IP адреса пользователь попытается авторизоваться с неизвестного IP адреса, то пользователю будет предложено добавить текущий IP адрес в список разрешенных адресов. Для того, чтобы добавить текущий IP в список разрешенных, пользователю необходимо перейти по специальной одноразовой ссылке, которую он получит на свой почтовый адрес. Письмо с темой «Подтверждение IP адреса» отправляется автоматически в момент, когда пользователь пытается авторизоваться с неизвестного адреса и соглашается на добавление текущего IP адреса в список разрешенных. После перехода по специальной ссылке текущий адрес пользователя будет добавлен в список разрешенных и последующие авторизации с этого адреса будут проходить без запроса подтверждения.
 
  
== Настройка безопасности в {{NameSystem}}==
+
В случае, если вы забыли пароль, вы можете воспользоваться функцией изменения пароля. В рамках нее на адрес вашей персональной электронной почты, указанный в разделе настроек '''Аккаунт менеджмент → Агенты и пользователи → Профили пользователей''', будет выслана ссылка для одноразовой попытки изменения пароля.
=== Настройка авторизации пользователей ===
 
  
В разделе '''«Профиль пользователя»''' менеджеру агентства доступны настройки для выбора режимов защиты агентства/субагентства/определенного пользователя.
+
В нашей системе предусмотрена защита от подбора пароля перебором, но для максимальной безопасности вашего аккаунта рекомендуется использовать длинный уникальный пароль, содержащий не менее 8 символов, среди которых должны быть использованы цифры, строчные и заглавные буквы латинского алфавита.
  
С помощью параметра'''Дополнительная защита при авторизации''' менеджер агентства может включить или выключить дополнительную защиту. Значение настройки «Не определено» соответствует первой авторизации пользователя, когда ему предоставляется выбор типа защиты (используя cookie или IP).
+
=== Двухэтапная аутентификация для сотрудников агентств ===
При включенной настройке '''Дополнительная защита при авторизации''' доступен выбор типа защиты(через cookie или через IP адрес).
 
  
*Подтверждение через браузер (используя cookie) - после подтверждения с помощью одноразового кода отправленного на почтовый адрес или телефонный номер, данные об успешной авторизации будут сохранены в браузере пользователя в cookie файлах. Подтверждение через браузер необходимо периодически проходить повторно, время существования данных об успешном подтверждении через браузер может быть ограниченным и может задаваться менеджером в разделе '''«Администрирование» - «Настройки системы»''' в поле «Время жизни cookie для дополнительной авторизации», значение задается в часах. Для неограниченного времени существования cookie файла необходимо задать 0.  
+
Аутентификация только по логину и паролю недостаточно безопасна, так как злоумышленник может получить ваш логин и пароль от вас напрямую, например, через [https://ru.wikipedia.org/wiki/%D0%A4%D0%B8%D1%88%D0%B8%D0%BD%D0%B3 фишинг].  
*Подтверждение через IP - после подтверждения пользователя при попытке входа на сайт, будет сохранен текущий IP адрес пользователя. При последующем входе на сайт не потребуется повторное подтверждение если у пользователя не сменится IP адрес. Возможно сохранение неограниченного количества IP адресов, что позволит заходить на сайт с различных устройств без подтверждения.
+
При получении электронных писем от неизвестных вам отправителей проверяйте адреса ссылок, указанных в тексте письма. Не вводите ваш логин и пароль в формы на подозрительных сайтах, даже если они выглядят как сайты, привязанные к {{NameSystem}}.
  
Рекомендуется использовать вариант подтверждения через IP адрес, т.к. такой вариант наиболее безопасен. <br/>Пользователям у которых происходит частая смена IP адреса подойдет вариант с подтверждением через cookie файлы, но в таком случае следует быть уверенным, что на устройстве пользователя не стоит вредоносного ПО.
+
Для обеспечения дополнительной защиты в нашей системе была добавлена возможность проводить двухэтапную аутентификацию для ваших сотрудников:
  
У менеджера агентства есть возможность задать шаблоны отправляемых сообщений при подтверждении (e-mail или телефонного номера) в разделе '''«Заказы»''' - '''«Шаблоны электронных писем»''', Подтверждение авторизации и Подтверждение контакта (e-mail, телефон).
+
* Первый этап — ввод логина и пароля
В шаблоне можно указать ссылку, перейдя по которой пользователь подтвердит свой e-mail/телефон и будет авторизован.
+
* Второй этап — подтверждение через код, отправленный в виде SMS сообщения на номер мобильного телефона или в письме по адресу электронной почты
  
=== Подтверждение IP адреса  ===
+
Для включения двухэтапной аутентификации нужно:
В разделе '''«Пользователи и группы» - «Профиль пользователя»''' опция «Включить проверку IP адресов» включает дополнительную защиту через проверку IP адреса.
 
В поле «Разрешённые IP адреса» можно добавить IP адреса, для которых не требуется подтверждение адреса при авторизации.
 
  
=== CSRF защита ===
+
# Включить функциональность в разделе настроек '''Управление сайтом → Домены и протоколы''' пользователям с определенными правами. <br> Настройте параметр '''Использовать дополнительную защиту при авторизации для''':
 +
#* ''Администраторов''
 +
#* ''Менеджеров агентства''
 +
#* ''Экспертов агентства''
 +
#* ''Менеджеров компаний''
 +
#* ''Экспертов компаний''
 +
#* Пользователей агентства''
 +
#* ''Пользователей компаний''
 +
# При последующем входе в систему этим пользователям будет предложено подтвердить адрес своей электронной почты или номер мобильного телефона через отправку одноразового кода. Данный шаг можно пропустить 5 раз, далее вход в систему будет невозможен без подтверждения указанных выше данных.
 +
# В дальнейшем при входе с нового устройства (браузера) или IP-адреса необходимо будет пройти процедуру верификации, введя код, отправленный при этом на номер телефона или адрес электронной почты
  
В целях повышения надежности системы, в системе Nemo Travel реализована защита от [https://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D0%B6%D1%81%D0%B0%D0%B9%D1%82%D0%BE%D0%B2%D0%B0%D1%8F_%D0%BF%D0%BE%D0%B4%D0%B4%D0%B5%D0%BB%D0%BA%D0%B0_%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%B0 CSRF] атак. Так, при переходе с другого сайта по ссылке, ведущей в панель администрирования Nemo Travel, будет произведено перенаправление на специальную защитную страницу, с которой пользователь сможет попасть на интересующую его страницу.
+
Самостоятельно поменять ранее подтвержденный адрес электронной почты или телефон возможно только после входа в личный кабинет. При изменении этих данных необходимо будет верифицировать номер телефона или адрес электронной почты повторно.
 +
 
 +
{{Attention|Для подтверждения входа по SMS необходимо иметь подключенный модуль [[СМС_Трафик|SMS Traffic]].|}}
 +
 
 +
=== Ограничения для аккаунтов сотрудников {{NameSystem}} ===
 +
 
 +
Административные аккаунты сотрудников {{NameSystem}} максимально защищены. Авторизоваться с помощью них можно только с определенных IP-адресов и с прохождением обязательной процедуры двухэтапной аутентификации по номеру личного телефона или корпоративной почты.
 +
У сотрудников {{NameSystem}} существуют ограничения на некоторые действия. К примеру, они не могут изменять правила ценообразования агентства.
 +
 
 +
=== Протокол HTTPS ===
 +
 
 +
Система {{NameSystem}} полноценно поддерживает работу веб-сайтов с использованием протокола HTTPS. Этот протокол обеспечивает безопасную передачу данных по открытым каналам связи, используя механизмы асимметричного шифрования. Для корректной работы по этому протоколу вы должны приобрести SSL-сертификат для домена вашего веб-сайта и передать его нашим системным администраторам.
 +
 
 +
Строго рекомендуется вводить персональные данные покупателей для оформления заказов или логин и пароль для прохождения аутентификации только по ссылкам, открытым по HTTPS протоколу.
 +
 
 +
=== Авторизация ===
 +
 
 +
Права пользователей определяются их ролью и дополнительными параметрами, установленными в административной части {{NameSystem}}.
 +
 
 +
Для выполнения всех действий в системе, которые могут прямо или косвенно нанести вред или финансовый ущерб, требуется авторизация.
 +
 
 +
== Защита персональных данных ==
 +
 
 +
Для получения доступа к своим персональным данным или данным ранее заполненных профилей пассажиров, пользователь должен авторизоваться в системе и перейти в личный кабинет.
 +
Для обеспечения безопасного хранения все персональные данные записываются в базу данных в зашифрованном виде.
 +
Сотрудники {{NameSystem}} не имеют доступа к профилям пассажиров, созданных через личный кабинет другими пользователями системы.
 +
 
 +
Пользователь по собственному желанию может полностью удалить свой аккаунт из системы, после чего все его персональные данные и данные его профилей будет удалены из системы без возможности восстановления.
 +
 
 +
== Защита данных о заказах ==
 +
 
 +
Получить доступ к ранее сделанному заказу можно несколькими безопасными способами:
 +
 
 +
# Авторизоваться в системе (если заказ был сделан авторизованным пользователем)
 +
# Ввести уникальный код доступа (обычно код отправляется на адрес электронной почты, указанный при бронировании)
 +
# Вход через форму с указанием номера заказа и фамилии первого пассажира
 +
# По секретной ссылке из QR-кода на маршрут-квитанции (если QR-код предусмотрен шаблоном документа)
 +
 
 +
В системе предусмотрена защита от подбора кода доступа и фамилии первого пассажира перебором.
 +
 
 +
Код доступа и фамилия первого пассажира хранятся в базе в виде SHA256 хеша с "солью" и, по аналогии с паролем, не могут быть восстановлены в исходный вид.
 +
 
 +
Все данные по заказу, заказчику, пассажирам, а также ссылка для QR-кода хранятся в базе данных в зашифрованном виде.
 +
 
 +
Получить доступ к маршрут-квитанциям и другим документам, относящимся к заказу, можно только после получения доступа к основному заказу (по методам описанным выше).
 +
Все документы хранятся в базе в зашифрованном виде.
 +
 
 +
== Безопасность {{NameSystem}} как веб-приложения ==
 +
=== Защита от инъекций ===
 +
Все входные данные валидируются как средствами JavaScript, так и на уровне сервера. Все запросы к базам данных в системе написаны с использованием плейсхолдеров и экранированием параметров, подставляемых в них.
 +
=== Защита от XSS ===
 +
Все данные перед вводом и выводом проверяются на предмет наличия JS-инъекций. Это гарантирует безопасность использования COOKIE в нашей системе.
 +
Если злоумышленник всё же получает COOKIE из чужого браузера (к примеру, с помощью зараженного вирусами программного обеспечения), он не сможет ими воспользоваться для аутентификации в нашей системе под учетными записями ваших сотрудников. Их идентификаторы сессий привязаны к IP-адресам.
 +
=== Защита от  CSRF ===
 +
В целях повышения надежности системы реализован механизм защиты от [https://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D0%B6%D1%81%D0%B0%D0%B9%D1%82%D0%BE%D0%B2%D0%B0%D1%8F_%D0%BF%D0%BE%D0%B4%D0%B4%D0%B5%D0%BB%D0%BA%D0%B0_%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%B0 CSRF] атак.
 +
 +
Ограничены переходы по ссылкам (или автоматические перенаправления) со сторонних сайтов на страницы административной панели {{NameSystem}} или на страницы, выполняющие операции с заказами.
 +
 
 +
В этом случае у пользователя будет предварительно запрошено подтверждение о переходе.
 +
 
 +
=== Проверка по IP ===
 +
Важные запросы от сторонних сервисов, например, от платежных шлюзов, проверяются на допустимость IP-адреса отправителя по "белому списку". Таким образом запрос практически невозможно подделать злоумышленникам.
 +
Важные запросы от API пользователей, например, на выписку билетов, также проверяются по допустимым IP-адресам.
 +
 
 +
=== Блокировки по IP ===
 +
В системе предусмотрены механизмы как ручной, так и автоматической блокировки злоумышленников по IP-адресу
 +
=== Логирование и мониторинг ===
 +
Все операции с заказами и действия пользователей системы логируются. Логи индексируются (для быстрого обращения к ним) и хранятся в базе данных в течение длительного времени.
 +
 
 +
Сокращенный вариант логов доступен для просмотра менеджеру агентства в административной панели. Полный вариант доступен только сотрудникам {{NameSystem}} и может быть предоставлен по запросу в техническую поддержку.
 +
 
 +
Обо всех критических программных ошибках и подозрительных действиях (которые могут трактоваться как попытка взлома) сотрудники {{NameSystem}} автоматически получают уведомления по электронной почте или на телефон 24x7.
 +
 
 +
==См. также==
 +
*[[Авторизованный пользователь]]
 +
*[[Права доступа]]
 +
*[[Менеджер агентства]]
 +
*[[Пользователь]]
 +
*[[Защищенное соединение]]
 +
*[[Сертификат SSL]]
 +
*[[Протокол]]

Версия 17:20, 5 декабря 2018

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

Аутентификация и авторизация

Безопасное хранение паролей

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

В базе данных пароли хранятся в виде хешей, полученных по алгоритму SHA256 с добавлением случайной "соли". Это является гарантией того, что ваш пароль не будет доступен для чтения ни злоумышленникам, ни сотрудникам Nemo.travel.

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

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

Двухэтапная аутентификация для сотрудников агентств

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

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

  • Первый этап — ввод логина и пароля
  • Второй этап — подтверждение через код, отправленный в виде SMS сообщения на номер мобильного телефона или в письме по адресу электронной почты

Для включения двухэтапной аутентификации нужно:

  1. Включить функциональность в разделе настроек Управление сайтом → Домены и протоколы пользователям с определенными правами.
    Настройте параметр Использовать дополнительную защиту при авторизации для:
    • Администраторов
    • Менеджеров агентства
    • Экспертов агентства
    • Менеджеров компаний
    • Экспертов компаний
    • Пользователей агентства
    • Пользователей компаний
  2. При последующем входе в систему этим пользователям будет предложено подтвердить адрес своей электронной почты или номер мобильного телефона через отправку одноразового кода. Данный шаг можно пропустить 5 раз, далее вход в систему будет невозможен без подтверждения указанных выше данных.
  3. В дальнейшем при входе с нового устройства (браузера) или IP-адреса необходимо будет пройти процедуру верификации, введя код, отправленный при этом на номер телефона или адрес электронной почты

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

Внимание! Для подтверждения входа по SMS необходимо иметь подключенный модуль SMS Traffic.

Ограничения для аккаунтов сотрудников Nemo.Travel

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

Протокол HTTPS

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

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

Авторизация

Права пользователей определяются их ролью и дополнительными параметрами, установленными в административной части Nemo.Travel.

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

Защита персональных данных

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

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

Защита данных о заказах

Получить доступ к ранее сделанному заказу можно несколькими безопасными способами:

  1. Авторизоваться в системе (если заказ был сделан авторизованным пользователем)
  2. Ввести уникальный код доступа (обычно код отправляется на адрес электронной почты, указанный при бронировании)
  3. Вход через форму с указанием номера заказа и фамилии первого пассажира
  4. По секретной ссылке из QR-кода на маршрут-квитанции (если QR-код предусмотрен шаблоном документа)

В системе предусмотрена защита от подбора кода доступа и фамилии первого пассажира перебором.

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

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

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

Безопасность Nemo.Travel как веб-приложения

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

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

Защита от XSS

Все данные перед вводом и выводом проверяются на предмет наличия JS-инъекций. Это гарантирует безопасность использования COOKIE в нашей системе. Если злоумышленник всё же получает COOKIE из чужого браузера (к примеру, с помощью зараженного вирусами программного обеспечения), он не сможет ими воспользоваться для аутентификации в нашей системе под учетными записями ваших сотрудников. Их идентификаторы сессий привязаны к IP-адресам.

Защита от CSRF

В целях повышения надежности системы реализован механизм защиты от CSRF атак.

Ограничены переходы по ссылкам (или автоматические перенаправления) со сторонних сайтов на страницы административной панели Nemo.Travel или на страницы, выполняющие операции с заказами.

В этом случае у пользователя будет предварительно запрошено подтверждение о переходе.

Проверка по IP

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

Блокировки по IP

В системе предусмотрены механизмы как ручной, так и автоматической блокировки злоумышленников по IP-адресу

Логирование и мониторинг

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

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

Обо всех критических программных ошибках и подозрительных действиях (которые могут трактоваться как попытка взлома) сотрудники Nemo.Travel автоматически получают уведомления по электронной почте или на телефон 24x7.

См. также