İçeriğe atla

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: nosniff
  • X-Frame-Options: SAMEORIGIN
  • Referrer-Policy: strict-origin-when-cross-origin

Veritabanı →