DevBlog.
Bloga Dön

React 19 ve Next.js 16: Server Actions Güvenliği ve En İyi Pratikler

3 dk okuma

React 19 ve Next.js 16 ile olgunlaşan Server Actions özelliğini kullanırken sık yapılan güvenlik hataları ve yetkilendirme (authorization) katmanı tasarımı.

React 19 ve Next.js 16 ile birlikte Server Actions, modern web geliştirmede API endpoint'i yazma ihtiyacını neredeyse tamamen ortadan kaldırdı. Ancak bu kullanım kolaylığı, beraberinde çok kritik güvenlik risklerini de getirdi.

Server Actions Nedir?

En basit anlatımla Server Actions, frontend bileşenlerinden doğrudan sunucu tarafında çalışan fonksiyonları çağırmamızı sağlayan bir yapıdır. Ancak unutmamanız gereken en önemli kural şudur: Her Server Action, arka planda aslında bir HTTP POST endpoint'idir.

Yani kötü niyetli bir kullanıcı, tarayıcıyı devreden çıkararak bu fonksiyona istediği parametrelerle doğrudan istek atabilir.

En Sık Yapılan Güvenlik Hataları

1. Parametrelere Güvenmek

Eğer kullanıcının ID değerini frontend'den parametre olarak gönderiyorsanız, bir saldırgan bu ID'yi değiştirerek başka bir kullanıcının verilerini güncelleyebilir veya silebilir.

❌ Yanlış Yaklaşım:

// sunucu tarafı
export async function deletePost(postId: string, userId: string) {
  // Sadece parametreye güvenerek işlem yapmak güvenlik açığıdır!
  await prisma.post.delete({ where: { id: postId } });
}

✅ Doğru Yaklaşım:

import { auth } from "@/lib/auth";

export async function deletePost(postId: string) {
  const session = await auth();
  if (!session || !session.user) {
    throw new Error("Yetkisiz işlem!");
  }
  
  // userId'yi parametre olarak değil, güvenli session'dan alıyoruz
  const post = await prisma.post.findUnique({ where: { id: postId } });
  if (post.authorId !== session.user.id) {
    throw new Error("Bu işlemi yapmaya yetkiniz yok!");
  }
  
  await prisma.post.delete({ where: { id: postId } });
}

2. Zod ile Girdi Doğrulaması (Validation) Yapmamak

Sunucuya gelen her verinin tipini ve formatını doğrulamak zorundasınız. Server Action girişlerini Zod şemaları ile sarmalamak en güvenli yoldur.

import { z } from "zod";

const schema = z.object({
  title: z.string().min(3).max(100),
  content: z.string().min(10)
});

export async function createPost(formData: unknown) {
  const parsed = schema.safeParse(formData);
  if (!parsed.success) {
    return { error: "Geçersiz veri biçimi" };
  }
  // ... veritabanı kayıt işlemi
}

Özet

Server Actions kullanırken her zaman Zero Trust (Sıfır Güven) prensibini benimseyin. Kullanıcı kimliğini sunucu tarafındaki session'dan doğrulayın, yetkilendirmeyi her action içinde tek tek yapın ve girdi verilerini Zod ile mutlak surette kontrol edin.

İlginizi Çekebilir

Önerilen Ekipman

Logitech MX Master 3S

Bu blog yazısını yazarken kullandığım ve kod yazmayı keyfe dönüştüren efsanevi mouse. Bilek ağrılarına son!

Yorumlar (2)

Yorum yapmak için giriş yapmalısınız

Topluluğumuzu spam ve botlardan korumak için içeriklere sadece kayıtlı üyeler etkileşimde bulunabilir.

Giriş Yap / Üye Ol
Z
Zeynep Kaya
12 Haziran 2026

Affiliate linkinizdeki ürünü ben de kullanıyorum, herkese tavsiye ederim. Elinize sağlık.

A
Ahmet Yılmaz
11 Haziran 2026

Gerçekten çok faydalı bir yazı olmuş, teşekkürler! Özellikle bahsettiğiniz detaylar çok işime yarayacak.