如何在同一个 laravel 应用程序上通过 laravel 护照安全地使用 axios

Posted

技术标签:

【中文标题】如何在同一个 laravel 应用程序上通过 laravel 护照安全地使用 axios【英文标题】:How to use axios securely with laravel passport on the same laravel app 【发布时间】:2020-03-28 04:17:40 【问题描述】:

我有一个准备好所有必需 API 的 Laravel 后端,一个 android 应用程序正在使用它们,现在我想要一个带有 vuejs 的异步页面,因为我必须使用 API 我必须使用 Axios。但是因为我安装了护照,所以我必须在js中暴露用户的敏感数据,

由于js是客户端语言,只要对web开发有一点了解,就可以查看页面源代码,获取当前认证用户的邮件地址和密码。更重要的是,客户的秘密也被暴露了。在这种情况下我该怎么办?

有解决办法吗?

【问题讨论】:

您是否将页面发送给不是当前已通过身份验证的用户?他们是否可以看到自己的电子邮件地址是否重要?还是他们必须发送的令牌才能继续显示他们是谁? @Quentin 不,只有经过身份验证的用户才能访问该页面。要回答您的第二个问题,不,没关系,但我不希望我的网络应用程序存在任何漏洞。 我的观点是,向人们提供他们已经拥有的信息不是漏洞! @Quentin 一个人在电脑上登录,其他人不能只查看页面源,为什么每次都假设是预期用户访问电脑? 如果问题是用户登录然后让他们的计算机无人看管,那么您需要考虑通过超时来保护事情,而不是拒绝向用户提供他们已经拥有的信息。 【参考方案1】:

您可以构建一个中间件将客户端详细信息注入您的请求:

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\DB;

class InjectClientIdAndSecret

    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    
        $client = DB::table('oauth_clients')
            ->where('password_client', 1)
            ->first();

        $request->json()->add([
            'client_id' => $client->id,
            'client_secret' => $client->secret,
            'grant_type' => 'password'
        ]);

        return $next($request);
    


【讨论】:

会试试这个。感谢您的回答。

以上是关于如何在同一个 laravel 应用程序上通过 laravel 护照安全地使用 axios的主要内容,如果未能解决你的问题,请参考以下文章

如何通过另一个网络上的浏览器打开 laravel 应用程序(使用公共 ip)

如何在 Windows 上通过 Laravel Installer 安装 Laravel?

如何通过 laravel 应用程序使用数字海洋服务器从另一台服务器在远程服务器上运行脚本文件

text 接下来和前la laravel

关于Laravel,我们要关心它什么?

php Usar la clase Db en Laravel para hacer consultas a la base de datos