robrogers3/laracastle

为 Laravel 提供的 Castle.io 集成包

1.0.1 2020-01-13 06:36 UTC

This package is auto-updated.

Last update: 2024-09-05 11:21:07 UTC


README

Latest Version on Packagist Total Downloads Build Status

Laracastle 是一个自动化安装和配置 castle.io 的包,用于您的 Laravel 网站。

什么是 Castle.io

Castle.io 主动保护您的用户免受账户黑客攻击。当您订阅他们的服务时,当用户尝试登录您的网站或访问受保护资源时,他们会做出明智的决策。

更多信息,我建议您查看他们的 网站

为什么选择 Laracastle?

Castle.io 集成并不困难,但确实需要一些工作。

使用此包,您可以在几分钟内而不是数小时甚至数天内集成 castle.io 的服务。

安装

通过 Composer

$ composer require robrogers3/laracastle

配置

要求

Laracastle 几乎依赖于 Laravel Auth 包。在 Laravel 6 中,Auth 是一个独立的包。所以首先安装它。如果没有 Auth 包,您将有很多工作要做。

composer require laravel/ui --dev

然后做以下之一

php artisan ui bootstrap --auth
# or 
php artisan ui vue --auth
# or
php artisan ui react --auth

然后当然运行这个

php artisan migrate

此外,如果您计划使用邮箱验证来保护重要的路由,这是推荐的,您需要配置邮件驱动程序。

初始配置

通过 composer 需求包后,运行

php artisan vendor:publish --provider='robrogers3\laracastle\LaracastleServiceProvider'

然后,设置 castle.io。

如果您不知道您的 castle.io APP_ID 或 SECRET,那么您需要注册 castle.io

然后,更新 .env 文件,如下所示

CASTLE_SECRET=YOUR_CASTLE_SECRET
CASTLE_APP_ID=YOUR_CASTLE_APP_ID
CASTLE_MODE=[evaluation|production]

HOME_ROUTE='/home'

当您刚开始时,将 CASTLE_MODE 设置为 'evaluation'。一旦您准备好采取行动,将 CASTLE_MODE 更改为 'production'。

此外,castle 需要一个 HOME_ROUTE,默认为 'home',如果您更改了 'home' 路由,可以更改此设置。

运行自动安装

只需运行此命令即可在几分钟内集成 Castle.io

注意:这将覆盖您的 User 类和 AppServiceProvider。

php artisan laracastle:install

或者,手动安装

将此行添加到您的主布局 blade 文件(例如 app.blade.php)的 head 部分中

    @include('vendor/robrogers3/headscript/laracastle')

(强烈)推荐配置更改

使用“邮箱验证”来保护您的路由,以极大地减少您的烦恼!

默认情况下,如果 castle.io 对登录尝试提出挑战,Laracastle 将要求您的用户再次登录,这可能很痛苦。更好的替代方案是确保用户已经通过 MustVerifyEmail 接口验证了他们的电子邮件地址。

首先,了解 Laravel 的邮箱验证

然后更新 routes/web.php 中的 Auth 路由,如下所示

Auth::routes(['verify' => true]);

然后 确保 您的用户实现了 'MustVerifyEmail' 和 'Laracastle\UserInterface'。

您还需要将这两个特质添加到您的用户模型中

  • ResetsAccounts,和
  • ChecksVerification

您的 User 类将如下所示

use robrogers3\Laracastle\UserInterface;
use robrogers3\Laracastle\Traits\ChecksVerification;
use robrogers3\Laracastle\Traits\ResetsAccount;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;

class User extends Authenticatable implements MustVerifyEmail, UserInterface
{
    use Notifiable, ResetsAccount, ChecksVerification;
    //...
}

最后,保护需要通过邮箱验证的路由。如下所示

Route::get('home', function () {
    // Only verified users may enter...
})->middleware('verified'); // verified middleware is the key!

可选但推荐:将其添加到您的 AppServiceProvider 中

//...
use App\User;
use robrogers3\Laracastle\UserInterface;
//...

public function boot()
{
    $this->app->bind(UserInterface::class, function ($app) {
            return User::class;
    });
}

当您准备好上线时。

第一步 前往 Castle.io 控制面板中的 Web Hooks

并设置两个 webhook 端点

  1. 对于 '$incident.confirmed' 事件,添加此端点
https://your-base-url.com/laracastle/compromised-webhook
  1. 对于 '$review.opened' 事件,添加此端点
https://your-base-url.com/laracastle/review-webhook

不要为任何一个端点选择 订阅所有事件

review device

请注意,第二个 webhook 是推荐但不强制的。

接下来,如果你有热情,可以美化审查设备页面。

review device

你可以在

./resources/views/vendor/robrogers3/pages/device.blade.php

恭喜 你已经完成了。你的用户现在受到 castle.io 的保护。

它是如何(Laracastle)工作的?

在登录时保护您的用户账户

Laracastle 集成到 Laravel 发射的几个与用户认证过程相关的事件中。例如:登录、登出和重置密码。最重要的是登录事件。

当登录事件被触发时,Laracastle 会向 castle.io 发出实时请求,以确定请求是否看起来“可疑”或“真实”。根据可疑程度,它可以选择允许登录、挑战登录或拒绝登录。

如果允许登录,那么 Laracastle 会像往常一样继续。

如果登录被挑战,那么我们会要求用户验证他们的电子邮件地址,或者请求他们再次登录。(参见 config

如果拒绝登录,那么我们将阻止登录,然后 Laravel 将接管锁定账户指定的时间。在 Laravel.com 上了解更多关于请求限制的信息 限制请求

使用 Webhooks 主动保护您的账户

当您的账户可能已遭受入侵时。

如果 Castle.io 确定账户可能已遭受入侵,它会向 Laracastle 的 webhook 发送请求。Laracastle 使用这些信息重置用户的账户密码,并通过电子邮件通知他们账户可能已遭受入侵,并在他们可以访问受保护资源之前需要重置密码。

account reset notification

当不寻常或可疑的设备访问您的账户时。

当 castle.io 认为有不寻常或可疑的设备活动访问您的账户时,它会向 Laracastle 发送另一个 webhook。Laracastle 使用这些信息通知用户活动,并要求他们审查。

review device notification

当用户点击通知中的“审查设备”时,他们可以看到活动的详细信息。用户可以确认这是有效活动,或者报告为无效活动。如果是有效活动,则可疑活动被解决,否则,活动将升级。升级时,将运行受损害的 webhook,重置账户密码,并通过电子邮件通知用户。

变更日志

请参阅 changelog 了解最近更改的详细信息。

测试

$ composer test

贡献

请参阅 contributing.md 了解详细信息和一个待办事项列表。

安全

如果您发现任何与安全相关的问题,请通过电子邮件向作者发送,而不是使用问题跟踪器。

鸣谢

许可证

MIT 许可证