Проблема безопасности проверки подлинности токена Laravel - PullRequest
0 голосов
/ 01 октября 2018

Я новичок в рамках Laravel.Я хочу интегрировать новый API в существующий проект laravel.В нем уже реализована аутентификация на основе токенов с помощью guard

config / auth.php

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],

    'api' => [
        'driver' => 'token',
        'provider' => 'users',
    ],
],

, и в маршрутах я добавил запрос GET запросаproject

Route::group(['middleware' => ['auth:api']], function() {

    Route::get('friends', 'UserController@friends')->name('api.user.friends');
}

Но теперь я могу получить доступ к списку друзей, используя URL-адрес, подобный этому

http://yourapp.com/api/friends?api_token=STORED_TOKEN_HERE

вместо передачи api_token в заголовке.Это проблема безопасности или метод, используемый в laravel?

В приложении уже есть URL GET (logout), который работает таким образом в приложении

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

Я думаю, что это не метод Laravel для аутентификации API.Вам следует использовать паспорт Laravel, посмотрите удивительный документ Laravel https://laravel.com/docs/5.7/passport

Laravel уже упрощает аутентификацию с помощью традиционных форм входа, но как насчет API?API обычно используют токены для аутентификации пользователей и не поддерживают состояние сеанса между запросами.Laravel упрощает аутентификацию API, используя Laravel Passport, который обеспечивает полную реализацию сервера OAuth2 для вашего приложения Laravel за считанные минуты.Passport построен поверх сервера League OAuth2, который обслуживают Энди Миллингтон и Саймон Хэмп.

Для начала установите Passport через менеджер пакетов Composer:

composer require laravel/passport

Служба Passportпровайдер регистрирует свой собственный каталог переноса базы данных в платформе, поэтому вы должны перенастроить свою базу данных после регистрации провайдера.Миграции Passport создадут таблицы, необходимые вашему приложению для хранения клиентов и токенов доступа:

php artisan migrate

Затем необходимо выполнить команду passport: install.Эта команда создаст ключи шифрования, необходимые для создания токенов безопасного доступа.Кроме того, команда создаст клиентов «персональный доступ» и «предоставление пароля», которые будут использоваться для генерации токенов доступа:

php artisan passport:install

Для получения дополнительной информации ознакомьтесь с официальной документацией Laravel

0 голосов
/ 01 октября 2018

Вопрос в следующем: хотите ли вы (или нужно) ваше приложение, чтобы разрешить передачу этого маркера доступа в параметрах запроса?Под этим я подразумеваю: нужно ли использовать токены в URL (в некоторых случаях? Во всех случаях? Или вообще не использовать?)

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

.ваше промежуточное ПО и (я полагаю) измените код с Request::input('api_token') на Request::header('api_token'), поэтому никто не сможет аутентифицироваться, передавая URL-адрес API в URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...