Защита API от прямого доступа

#laravel #vue.js #nuxt.js

#laravel #vue.js #nuxt.js

Вопрос:

У меня есть отдельный сервер и интерфейс. Однако они выполняются на одном сервере (это может измениться в будущем). Серверная часть служит в качестве API и работает на Laravel. Интерфейс от Nuxt (Vue).

Я бы хотел, чтобы только мое приложение Nuxt могло получить доступ к API. Как я могу настроить Laravel на возврат данных только в том случае, если запрос поступает из приложения Nuxt?

Я думал о добавлении специального токена к запросам, но пользователь сможет проверить, какой запрос поступает, и захватить токен. Кто-нибудь может дать мне идеи, как это можно решить?

Комментарии:

1. Вы можете взглянуть на cors, для lavarel есть этот пакет: github.com/fruitcake/laravel-cors

2. @dreijntjens CORS не запрещает никому напрямую обращаться к URL-адресу, это не то, для чего он предназначен

Ответ №1:

Вы должны знать о CORS. Итак, на вашем сервере Laravel разрешайте запросы только из домена внешнего интерфейса сервера следующим образом:

 Access-Control-Allow-Origin: https://www.example.com  
  

Ответ №2:

Самым простым решением было бы добавить serverMiddleware в проект nuxt и направлять все запросы к «реальному» api через него. Клиенты попадут во внутренний nuxt api и не смогут увидеть фактический запрос, сделанный к реальному API. Там вы также можете добавить токен, о котором вы говорите, для дополнительного уровня безопасности.

Комментарии:

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