Существуют три основные темы: Аутентификация, Авторизация, Безопасность. Я дам ссылки и только короткие ответы. Предмет достаточно большой, чтобы написать несколько книг.
Аутентификация - кто тот, кто делает запрос. Существует много «стратегий» для пользователя аутентификации. Пожалуйста, проверьте большинство модулярных модулей: http://passportjs.org/docs.
Конечно, вы можете реализовать одну или несколько из этих стратегий самостоятельно.
Для аутентификации без гражданства jwt-токены очень удобны. Если вы хотите сами его закодировать (у Паспорта есть эта стратегия), проверьте эту ссылку (один из многих в сети) .
Как предотвратить перехват токенов? Всегда используйте https и время истечения срока действия токена.
Где хранить вашу сторону клиента-маркера? для подробного ознакомления с этим https://stormpath.com/blog/where-to-store-your-jwts-cookies-vs-html5-web-storage/ Короче не храните в веб-хранилище из-за атак XSS. Используйте куки, когда они правильно настроены, они безопасны (больше в прикрепленной ссылке), если они не настроены, они очень подвержены угрозам.
Авторизация: мы знаем пользователя, но у него есть доступ только к некоторым ресурсам. Пожалуйста, проверьте https://github.com/OptimalBits/node_acl Существует сущность с node_acl и паспорт: https://gist.github.com/danwit/e0a7c5ad57c9ce5659d2 В коротком паспорте аутентифицировать пользователя. Теперь мы хотим чего. Мы настраиваем роли и ресурсы и определяем отношение ролей и ресурсов. Затем мы устанавливаем для каждой роли пользователя. Модуль проверяет для нас разрешение пользователя.
Безопасность: ознакомьтесь с этой темой в документации на паруса фреймворка http://sailsjs.org/documentation/concepts/security, где описаны атаки и способы их предотвращения. Я пишу об экспресс:
DDOS: (часть вашего вопроса «слишком много запросов от того же клиента») «На уровне API не так много, что можно сделать на пути предотвращения». Это больше всего подходит администраторам серверов. Вкратце используйте балансировщик нагрузки. Если это один IP (не сотни), то черный список или ответ делей (для начала посмотрите на это https://www.npmjs.com/package/delayed-request, но я считаю, что это решение должно быть более сложным).
CSRF: «тип атаки, который заставляет конечного пользователя выполнять нежелательные действия на сервере веб-приложений». Посмотрите на этот модуль https://www.npmjs.com/package/csrf
XSS: «Тип атаки, в которой вредоносный агент управляет внедрением JavaScript на стороне клиента на ваш сайт», не доверяет никаким данным от пользователя. Всегда проверяйте, фильтруйте, сантизируйте. Посмотрите на это
В документации парусов существует больше типов атак, но выше всего популярны.
Итак, если наши страницы являются общедоступными, не требуя какой-либо аутентификации пользователей, нет способа предотвратить внешний вызов REST API? – MQ87
«общедоступный» означает открытый для всех, что значит «внешний» вызов тогда, для вас? –
Используется за пределами контекста веб-сайта, так что, скажем, не из кода, написанного от меня. – MQ87