Güvenlik
CSRF koruması
State-changing (POST, PUT, DELETE) rotalara CSRF doğrulaması otomatik eklenir. Formlarınızda csrf_field() kullanmanız yeterlidir:
<form method="post" action="/settings">
<?= csrf_field() ?>
<button type="submit">Kaydet</button>
</form>
Oturum ve kimlik doğrulama
app()->post('/articles/{id}', $handler, [new RequireAuth(auth())]);
RequireAuth middleware'i, oturum açmamış kullanıcıları belirttiğiniz login URL'sine yönlendirir.
Yetkilendirme (Gate)
Yetkilendirme kuralları gate()->define() ile tanımlanır. Tanımlanmamış bir yetki her zaman reddedilir:
gate()->define('article.update', fn (Identity $user, array $article) =>
$user->id() === $article['owner_id']
);
Rota seviyesinde kontrol:
app()->post('/articles/{id}', [ArticleController::class, 'update'], [
new RequireAuth(auth()),
new RequireAbility(auth(), gate(), 'article.update'),
]);
Veritabanı güvenliği
$rows = db()->table('products')
->where('price', '>=', 50)
->orderBy('price', 'DESC')
->get();
Query builder tüm değerleri parametrize eder. Sütun ve tablo isimleri allowlist ile doğrulanır. Ham SQL escape kapısı yoktur.
Güvenlik başlıkları
public/.htaccess otomatik olarak şu başlıkları ekler:
X-Content-Type-Options: nosniffX-Frame-Options: SAMEORIGINReferrer-Policy: strict-origin-when-cross-origin