robrogers3 / laracastle
为 Laravel 提供的 Castle.io 集成包
Requires
- castle/castle-php: ^2.0
- illuminate/support: ~5|~6
- kitetail/zttp: ^0.6.0
Requires (Dev)
- mockery/mockery: ^1.1
- orchestra/testbench: ~3|~4
- phpunit/phpunit: ^8.0
- sempro/phpunit-pretty-print: ^1.0
This package is auto-updated.
Last update: 2024-09-05 11:21:07 UTC
README
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 端点
- 对于 '$incident.confirmed' 事件,添加此端点
https://your-base-url.com/laracastle/compromised-webhook
- 对于 '$review.opened' 事件,添加此端点
https://your-base-url.com/laracastle/review-webhook
不要为任何一个端点选择 订阅所有事件。
请注意,第二个 webhook 是推荐但不强制的。
接下来,如果你有热情,可以美化审查设备页面。
你可以在
./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 使用这些信息重置用户的账户密码,并通过电子邮件通知他们账户可能已遭受入侵,并在他们可以访问受保护资源之前需要重置密码。
当不寻常或可疑的设备访问您的账户时。
当 castle.io 认为有不寻常或可疑的设备活动访问您的账户时,它会向 Laracastle 发送另一个 webhook。Laracastle 使用这些信息通知用户活动,并要求他们审查。
当用户点击通知中的“审查设备”时,他们可以看到活动的详细信息。用户可以确认这是有效活动,或者报告为无效活动。如果是有效活动,则可疑活动被解决,否则,活动将升级。升级时,将运行受损害的 webhook,重置账户密码,并通过电子邮件通知用户。
变更日志
请参阅 changelog 了解最近更改的详细信息。
测试
$ composer test
贡献
请参阅 contributing.md 了解详细信息和一个待办事项列表。
安全
如果您发现任何与安全相关的问题,请通过电子邮件向作者发送,而不是使用问题跟踪器。



