AI Bültenim Yapay Zeka Haber Portalı Logosu
Kod

Güvenlik incelemesi

Kod parçası için güvenlik bulguları ve düzeltmeler.

Kod Prompt Kütüphanesi için temsili kategori görseli

Prompt Metni

Aşağıdaki Next.js Route Handler'ı XSS, SSRF, gizli bilgi sızıntısı ve yetkilendirme açısından incele. Her bulguya önem derecesi ver ve kısa düzeltme örnekleri sun.

export async function POST(request: Request) {
  const { url, userId } = await request.json()
  const response = await fetch(url)
  const text = await response.text()
  return Response.json({
    html: '<div>' + text + '</div>',
    apiKey: process.env.INTERNAL_API_KEY,
    owner: userId,
  })
}

Prompt Sonucu

1. Critical — Gizli bilgi sızıntısı INTERNAL_API_KEY doğrudan istemciye dönüyor. Düzeltme: return Response.json({ html: safeText }) 2. High — SSRF Kullanıcı kontrollü url; localhost, metadata servisi veya iç ağ adreslerine istek gönderebilir. Düzeltme: const allowedHosts = new Set(['api.example.com']) const target = new URL(url) if (target.protocol !== 'https:' || !allowedHosts.has(target.hostname)) { return Response.json({ error: 'Geçersiz hedef.' }, { status: 400 }) } 3. High — Yetkilendirme userId istek gövdesinden geldiği için saldırgan başka bir kullanıcıyı taklit edebilir. Düzeltme: const session = await requireSession() const owner = session.user.id 4. Medium — Saklı XSS HTML metni JSON içinde dönse de istemci bunu dangerouslySetInnerHTML ile basarsa script çalışabilir. Dış yanıt güvenilir kabul edilmemelidir. Düzeltme: return Response.json({ text }) İstemci metni normal JSX ifadesiyle göstermelidir: <div>{data.text}</div>. HTML gösterimi zorunluysa güvenilir bir sanitizer ve katı Content Security Policy kullanılmalıdır. Ek kontroller: - İstek zaman aşımı ve maksimum yanıt boyutu belirlenmeli. - response.ok kontrol edilmeli. - Route erişimi kimlik doğrulamasıyla sınırlandırılmalı. - Hedef servis için redirect davranışı ayrıca doğrulanmalıdır.

AI Bültenim prompt kütüphanesi — Tüm promptlar