Все, что вы определяете на клиенте, видно на клиенте. Так же как и все определения маршрутов и логика маршрутов. В рабочем коде это будет запутано, но оно все еще там.
Если вы обеспокоены тем, что клиенты могут читать ваши маршруты, то вам следует больше беспокоиться о том, что это касается вас. Звучит немного запутанно, но суть в том, что вы должны дважды проверять все данные, публикуемые клиенту с помощью публикаций или манипулировать / создавать с помощью методов на сервере. Если ваш бэкэнд является надежным и максимально защищенным (100% никогда не будет возможным), вам не нужно заботиться о том, смогут ли клиенты увидеть, какие маршруты существуют, и получить к ним доступ.
Пример:
Боб нашел маршрут /admin
и отключил триггеры маршрутизатора, чтобы перенаправить его, если он не является администратором.
Теперь Боб мог видеть все данные, которые могут видеть администраторы. Чтобы предотвратить это, вы можете указать в publication
, имеет ли Боб роль «администратор», не публиковать его, если он не является администратором.
Ада также нашла этот путь к панели администратора и хочет создать нового пользователя. Поскольку ваш серверный метод для создания новых пользователей - это ValidatedMedthod
, который проверяет, имеет ли Ava роль администратора, он не сможет создать нового пользователя, поскольку Ava не является администратором.
Вывод:
Запрет доступа на стороне клиента - это просто не защищенный бот Magic UI. Простые настройки, однако на стороне сервера, помогут вам лучше спать.
Дополнительная справка:
Хороший способ начать работу - прочитать Руководство по безопасности метеоров:
https://guide.meteor.com/security.html
В конце также есть контрольный список безопасности, который я просто привожу здесь для полноты и SEO-оптимизации:
- Убедитесь, что в вашем приложении нет небезопасных пакетов или пакетов для автоматической публикации.
- Проверьте все аргументы метода и публикации, и включите аудит-проверки аргументов, чтобы проверить это автоматически.
- Запретить запись в поле профиля пользовательских документов.
- Используйте методы вместо вставки / обновления / удаления и разрешения / отказа на стороне клиента.
- Использовать определенные селекторы и фильтровать поля в публикациях.
- Не используйте необработанное включение HTML в Blaze, если вы действительно не знаете, что делаете.
- Убедитесь, что секретные ключи API и пароли отсутствуют в вашем исходном коде.
- Защищайте данные, а не пользовательский интерфейс - перенаправление от клиентского маршрута ничего не делает для безопасности, это просто приятная функция UX.
- Никогда не доверяйте идентификаторам пользователей, переданным от клиента. Используйте this.userId внутри Методы и публикации.
- Настройте политику браузера, но знайте, что не все браузеры поддерживают ее, поэтому она просто обеспечивает дополнительный уровень безопасности для пользователей с современными
браузеры.
Полезные пакеты, указанные в ответе:
MDG: подтверждено-метод
alanning: роли
Аудит-аргумент-чека