Отключите Meteor Router.routes в консоли браузера для неаутентифицированного пользователя - PullRequest
0 голосов
/ 28 июня 2018

Я работаю над приложением Meteor, которое использует Iron Router. У нас есть страница входа в нашем приложении. Даже если пользователь не вошел в систему, если я вызываю приведенный ниже код на консоли разработчика как неаутентифицированный пользователь:

Router.routes

Это дает все маршруты и соответствующие пути. Есть ли способ отключить доступ к этим путям или мне нужно вставить эти конечные точки в коде сервера?

1 Ответ

0 голосов
/ 28 июня 2018

Все, что вы определяете на клиенте, видно на клиенте. Так же как и все определения маршрутов и логика маршрутов. В рабочем коде это будет запутано, но оно все еще там.

Если вы обеспокоены тем, что клиенты могут читать ваши маршруты, то вам следует больше беспокоиться о том, что это касается вас. Звучит немного запутанно, но суть в том, что вы должны дважды проверять все данные, публикуемые клиенту с помощью публикаций или манипулировать / создавать с помощью методов на сервере. Если ваш бэкэнд является надежным и максимально защищенным (100% никогда не будет возможным), вам не нужно заботиться о том, смогут ли клиенты увидеть, какие маршруты существуют, и получить к ним доступ.

Пример:

Боб нашел маршрут /admin и отключил триггеры маршрутизатора, чтобы перенаправить его, если он не является администратором.

Теперь Боб мог видеть все данные, которые могут видеть администраторы. Чтобы предотвратить это, вы можете указать в publication, имеет ли Боб роль «администратор», не публиковать его, если он не является администратором.

Ада также нашла этот путь к панели администратора и хочет создать нового пользователя. Поскольку ваш серверный метод для создания новых пользователей - это ValidatedMedthod, который проверяет, имеет ли Ava роль администратора, он не сможет создать нового пользователя, поскольку Ava не является администратором.

Вывод:

Запрет доступа на стороне клиента - это просто не защищенный бот Magic UI. Простые настройки, однако на стороне сервера, помогут вам лучше спать.

Дополнительная справка:

Хороший способ начать работу - прочитать Руководство по безопасности метеоров:

https://guide.meteor.com/security.html

В конце также есть контрольный список безопасности, который я просто привожу здесь для полноты и SEO-оптимизации:

  1. Убедитесь, что в вашем приложении нет небезопасных пакетов или пакетов для автоматической публикации.
  2. Проверьте все аргументы метода и публикации, и включите аудит-проверки аргументов, чтобы проверить это автоматически.
  3. Запретить запись в поле профиля пользовательских документов.
  4. Используйте методы вместо вставки / обновления / удаления и разрешения / отказа на стороне клиента.
  5. Использовать определенные селекторы и фильтровать поля в публикациях.
  6. Не используйте необработанное включение HTML в Blaze, если вы действительно не знаете, что делаете.
  7. Убедитесь, что секретные ключи API и пароли отсутствуют в вашем исходном коде.
  8. Защищайте данные, а не пользовательский интерфейс - перенаправление от клиентского маршрута ничего не делает для безопасности, это просто приятная функция UX.
  9. Никогда не доверяйте идентификаторам пользователей, переданным от клиента. Используйте this.userId внутри Методы и публикации.
  10. Настройте политику браузера, но знайте, что не все браузеры поддерживают ее, поэтому она просто обеспечивает дополнительный уровень безопасности для пользователей с современными браузеры.

Полезные пакеты, указанные в ответе:

MDG: подтверждено-метод

alanning: роли

Аудит-аргумент-чека

...