martin3r/platform-core
Composer 安装命令:
composer require martin3r/platform-core
包简介
Plattform Core Package
README 文档
README
Diese Bausteine stellen modulübergreifend sichere Feldverschlüsselung und Hashing bereit.
Überblick
- Casts
Platform\Core\Casts\EncryptedString– verschlüsselt/entschlüsselt Strings transparentPlatform\Core\Casts\EncryptedJson– verschlüsselt/entschlüsselt JSON (Array)
- Trait
Platform\Core\Traits\Encryptable– richtet Casts ein und pflegt automatisch<feld>_hashbeim Speichern
- Helper
Platform\Core\Support\FieldHasher– HMAC-SHA256 Hashing (mit optionalem Team-Salt), inkl. Key-Rotation
- Konfiguration
config/security.php– Schlüssel für Verschlüsselung/Hashing und Rotation
Verwendung in Modellen
- Felder definieren (z. B. in einem Modul-Model):
use Platform\Core\Traits\Encryptable; class CustomerSecret extends Model { use Encryptable; protected array $encryptable = [ 'iban' => 'string', 'api_token' => 'string', 'meta' => 'json', ]; }
- Migration im Modul:
Schema::table('customers', function (Blueprint $table) { $table->text('iban')->nullable(); $table->char('iban_hash', 64)->nullable()->index(); $table->text('api_token')->nullable(); $table->char('api_token_hash', 64)->nullable()->index(); $table->longText('meta')->nullable(); });
- Suche über Hash statt Klartext:
use Platform\Core\Support\FieldHasher; $teamSalt = (string) auth()->user()?->currentTeam?->id; $hash = FieldHasher::hmacSha256($ibanImKlartext, $teamSalt); $customer = CustomerSecret::where('iban_hash', $hash)->first();
Schlüsselrotation
.env:HASH_KEY=stable-hash-key(optional; Fallback istAPP_KEY)PREVIOUS_HASH_KEYS=oldHashKey1,oldHashKey2PREVIOUS_ENCRYPTION_KEYS=oldEncKey1,oldEncKey2
- Verhalten:
- Casts versuchen Entschlüsselung mit aktuellem
APP_KEY, dann mitPREVIOUS_ENCRYPTION_KEYS. FieldHasher::matchesAny($value, $teamSalt, config('security.previous_hash_keys'))liefert Hashes für aktuelle und alte Keys (für Migrations-/Vergleichslogik).
- Casts versuchen Entschlüsselung mit aktuellem
Hinweise & Best Practices
- Verschlüsselte Felder als
text/longTextspeichern. - Für Indizes/Suche ausschließlich Hash-Spalten (
*_hash) verwenden; niemals Klartext indizieren. - Team-/Mandantensalt: Wenn möglich
team_idals Salt nutzen, um Hashes teambezogen zu entkoppeln. - Maskierung (UI/Logs): Bei Bedarf zusätzliche Helper ergänzen (z. B. IBAN-Maskierung).
martin3r/platform-core 适用场景与选型建议
martin3r/platform-core 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 2.11k 次下载、GitHub Stars 达 0, 最近一次更新时间为 2025 年 07 月 29 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 martin3r/platform-core 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 martin3r/platform-core 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 2.11k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 5
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: Unknown
- 更新时间: 2025-07-29