相关疑难解决方法(0)

以编程方式从 Laravel 包的 CSRF 检查中添加异常

简而言之的问题

我正在寻找一种方法来VerifyCsrfToken从包内的全局中间件管道中删除,而无需用户修改App\Http\Middleware\VerifyCsrfToken. 这可能吗?

用例

我正在开发一个包,可以轻松地将推送部署功能安全地添加到任何 Laravel 项目中。我从 Github 开始。Github 使用 webhooks通知 3rd 方应用有关事件的信息,例如推送或发布。换句话说,我会在 Github 上注册一个像http://myapp.com/deploy这样的 URL ,Github 会POST向该 URL发送一个请求,其中包含一个包含事件详细信息的负载,我可以使用该事件来触发新的部署。显然,我不想触发部署,因为 Github 服务以外的一些随机(或可能是恶意的)代理访问该 URL。因此,Github 有一个保护你的 webhooks 的过程. 这涉及向 Github 注册一个密钥,他们将使用该密钥发送一个特殊的、安全的哈希标头以及您可以用来验证它的请求。

我使这个安全的方法包括:

随机唯一 URL/路由和密钥

首先,我会自动生成两个随机的、唯一的字符串,它们存储在.env文件中并用于在我的应用程序中创建密钥路由。在.env文件中,这看起来像:

AUTODEPLOY_SECRET=BHBfCiC0bjIDCAGH2I54JACwKNrC2dqn
AUTODEPLOY_ROUTE=UG2Yu8QzHY6KbxvLNxcRs0HVy9lQnKsx
Run Code Online (Sandbox Code Playgroud)

config这个包创建了两个按键,auto-deploy.secret而且auto-deploy.route我可以访问登记的路线时,使其永远不会被发表在任何回购协议:

Route::post(config('auto-deploy.route'),'MyController@index');
Run Code Online (Sandbox Code Playgroud)

然后我可以去 Github 并像这样注册我的电子书:

Github webhook 注册界面

这样,部署 URL 和用于验证请求的密钥都将保持机密,并防止恶意代理在站点上触发随机部署。

用于验证 Webhook 请求的全局中间件

该方法的下一部分涉及为 Laravel 应用程序创建一个全局中间件,用于捕获和验证 webhook 请求。通过使用此 Laracasts 讨论线程中演示的方法,我能够确保我的中间件在队列开头附近执行。在ServiceProviderfor …

php github laravel-routing laravel-5.1

5
推荐指数
1
解决办法
595
查看次数

标签 统计

github ×1

laravel-5.1 ×1

laravel-routing ×1

php ×1