帮助开发者落实 Laravel 安全最佳实践,覆盖认证授权、输入校验与安全部署。
复制安装指令,让 AI 自动完成配置 · 推荐新手
请帮我安装 askskill 上的 "laravel-security" 技能: 1. 下载 https://raw.githubusercontent.com/affaan-m/ECC/main/docs/ja-JP/skills/laravel-security/SKILL.md 2. 保存为 ~/.claude/skills/laravel-security/SKILL.md 3. 装好后重载技能,告诉我可以用了
请检查一个 Laravel 项目常见的安全风险,按认证与授权、表单校验、CSRF、防止批量赋值、文件上传、环境变量与密钥管理、速率限制、部署安全这几个方面,给我一份审查清单和修复建议。
一份结构化的 Laravel 安全审查清单,附带风险说明与改进建议。
我在 Laravel 中实现用户头像上传,请给我安全最佳实践,包括 MIME 类型校验、大小限制、存储目录隔离、随机文件名、恶意脚本防护和访问控制,并提供示例代码。
针对 Laravel 文件上传的安全方案说明与可落地的代码示例。
请为 Laravel 应用整理一份生产环境安全部署规范,涵盖 .env 与密钥管理、调试模式、HTTPS、权限配置、日志保护、队列与缓存安全、速率限制和上线检查项。
一份面向生产环境的 Laravel 安全部署规范和上线检查列表。
Laravel アプリケーションを一般的な脆弱性から守るための包括的なセキュリティガイダンス。
VerifyCsrfToken 経由、セキュリティヘッダーは SecurityHeaders 経由)auth:sanctum、$this->authorize、ポリシーミドルウェア)UploadInvoiceRequest)サービスに到達する前にRateLimiter::for('login'))認証制御と並行してURL::temporarySignedRoute + signed ミドルウェア)から来ますAPP_DEBUG=false を本番環境で設定APP_KEY をセットして、漏洩時にはローテーション必須SESSION_SECURE_COOKIE=true と SESSION_SAME_SITE=lax(または機密アプリケーションは strict)を設定SESSION_HTTP_ONLY=true を設定して JavaScript アクセスを防止SESSION_SAME_SITE=strict を使用ルート保護例:
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
Route::middleware('auth:sanctum')->get('/me', function (Request $request) {
return $request->user();
});
Hash::make() でパスワードをハッシュし、平文で保存しないuse Illuminate\Support\Facades\Hash;
use Illuminate\Validation\Rules\Password;
$validated = $request->validate([
'password' => ['required', 'string', Password::min(12)->letters()->mixedCase()->numbers()->symbols()],
]);
$user->update(['password' => Hash::make($validated['password'])]);
$this->authorize('update', $project);
ルートレベルの実施にはポリシーミドルウェアを使用:
use Illuminate\Support\Facades\Route;
Route::put('/projects/{project}', [ProjectController::class, 'update'])
->middleware(['auth:sanctum', 'can:update,project']);
$fillable または $guarded を使用して、Model::unguard() は回避DB::select('select * from users where email = ?', [$email]);
{{ }}){!! !!} は信頼できる、サニタイズされた HTML にのみ使用VerifyCsrfToken ミドルウェアを有効に保つ@csrf を含めて、SPA リクエストで XSRF トークンを送信SPA 認証(Sanctum)の場合、ステートフルなリクエストが設定されていることを確認:
// config/sanctum.php
'stateful' => explode(',', env('SANCTUM_STATEFUL_DOMAINS', 'localhost')),
final class UploadInvoiceRequest extends FormRequest
{
public function authorize(): bool
{
return (bool) $this->user()?->can('upload-invoice');
}
public function rules(): array
{
return [
'invoice' => ['required', 'file', 'mimes:pdf', 'max:5120'],
];
}
}
$path = $request->file('invoice')->store(
'invoices',
config('filesystems.private_disk', 'local') // set this to a non-public disk
);
throttle ミドルウェアを適用use Illuminate\Cache\RateLimiting\Limit;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\RateLimiter;
RateLimiter::for('login', function (Request $request) {
return [
Limit::perMinute(5)->by($request->ip()),
Limit::perMinute(5)->by(strtolower((string) $request->input('email'))),
];
});
保存中のシックレット列には暗号化されたキャストを使用。
protected $casts = [
'api_token' => 'encrypted',
];
ヘッダーを設定するためのミドルウェア例:
use Illuminate\Http\Request;
…
帮助开发者为 Spring Boot 服务落实认证授权与安全加固最佳实践。