Segurança, IP Binding e Boas Práticas v3
Checklist operacional para APIs, clients e plugins em produção.
Allowlist / IP binding
// bootstrap/config/auth.php
'allowed' => [
'203.0.113.10', // seu IP
'app.meusite.com',
'https://app.amigo.com',
],['*']— aberto (útil em client público)- Lista — basta 1 item casar (IP ou domínio)
- Negado → 403 automático em
/api/*
Tokens
- Plain text só na criação — banco guarda SHA-256
- Use abilities mínimas em tokens de integração
- Revogue no ban (
revokeAllTokens) - Não logue Bearer tokens
CSRF
- Web: sempre
:csrfem formulários - API / webhooks / OAuth callback:
withoutCsrfconsciente - Detalhes: CSRF
Models & mass assignment
// Bloqueia tudo — exige $fillable
protected array $guarded = ['*'];
// Ou libera tudo e filtre no check()
protected array $guarded = [];
// Ou bloqueia colunas sensíveis
protected array $guarded = ['id', 'email', 'password'];🚨$guarded = []
Permite mass assignment em todas as colunas. Só use se
create/update forem alimentados exclusivamente por $req->check([...]).Lazy loading ($allowLazy)
Com debug/lazy restrito, declare relações permitidas:
protected array $allowLazy = ['orders', 'profile', 'subscription'];Use com sabedoria — lazy livre causa N+1 e lentidão. Prefira with() / load(). Veja ORM.
Plugins licenciados
authorize_plugin('profile_panel_hash', [
'title' => 'Plugin Inválido',
'message' => 'Seu plugin não possui licença válida.',
]);Recomendado no __construct do controller. Hash inválido pode bloquear o site até remover o plugin.
Produção
APP_DEBUG/system.debugdesligadophp mucrm cache:compile- HTTPS obrigatório para Bearer
- Rate limit no login e endpoints de economia
- Backups + schemas versionados
- ionCube e PHP 8.3+ atualizados