Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Yazı Tipi BoyutlandırıcıAa
  • Anasayfa
  • Teknoloji
    • Siber Güvenlik
    • Yapay Zeka
    • Donanım
    • Bilim
  • Yazılım
  • Savunma & İstihbarat
  • Oyun
  • Yaşam
    • Finans
    • Sinema
    • Dünyadan Haberler
  • İş Birliği
Okuma: Kullanıcıdan, istekten kiracıyı çözümleyin.
Paylaş
Yazı Tipi BoyutlandırıcıAa
Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Ara
Bizi Takip Et
  • Hakkımızda
  • Gizlilik politikası
  • Tanıtım Yazısı ve Backlink Hizmeti
© 2026 Teknomers. All Rights Reserved.

Anasayfa » Kullanıcıdan, istekten kiracıyı çözümleyin.

Yazılım

Kullanıcıdan, istekten kiracıyı çözümleyin.

teknomers
Son güncelleme: 30 Haziran 2026 03:28
teknomers
Paylaş
Paylaş


TL;DR

  • Çok kiracılı (multi-tenant) bir uygulama, etkin kiracıyı request (alt domain/başlık) üzerinden çözmekteydi, bunun yerine authenticated user üzerinden çözmesi gerekiyordu.
  • Bu durum, “ben hangi kiracıdayım” sorusunun doğruluğunun istemciye bağlı olmasına neden oluyordu; bu yanlış bir yaklaşım.
  • Düzeltme: Kiracıyı, kullanıcının organizasyon üyeliğinden türetmek, bunu middleware içinde zorunlu kılmak ve kapalı başarısızlığı sağlamak. Bir test bu davranışı kilitler.


Hata, bir cümlede

Request, uygulamaya hangi kiracıyı yüklemesi gerektiğini söylüyordu ve uygulama buna inanıyordu.

Bir çok kiracılı SaaS uygulamasında, her sorgu örtük olarak kapsamlıdır: “bana bu kiracının panolarını ver.” Eğer kiracı kimliği, istemcinin kontrol ettiği bir şeyden geliyorsa — bir alt domain, başlık, rota parametresi — o zaman kapsam yalnızca istemcinin güvenilirliği kadar güvenlidir. Bu, bir açık kapı durumuna yol açar.


Güvenin nerede olmalı

Bunu bir bina kartı gibi düşünün. Request, birinin “ben buradayım, 9. kat için” demesi gibidir. Üyelik kaydı, hangi katlara erişim izniniz olduğunu belirten karttır. Siz kartı kontrol edersiniz, iddiayı değil.

ÖnceSonra
Doğruluk kaynağırequest (alt domain / başlık)kullanıcının organizasyon üyeliği
Kiracı kim tarafından belirleniristemcisunucu
Başarısızlık durumukullanıcı, ait olmadığı bir kiracıya geçiş yapabilirçözüm kapalı başarısızlık ile sonuçlanır
Test edilebilir mi?zor — request şekline bağlıevet — kullanıcıya bağlı


Düzeltmenin şekli

Kiracıyı, authenticated kullanıcının organizasyonundan çözmek için bir middleware oluşturun; tenant-scoped işlemler başlamadan önce bunu yapın:

final class SetTenantContext
{
    public function handle(Request $request, Closure $next): Response
    {
        $org = $request->user()?->currentOrganization();

        // Organizasyon yok, tenant context yok. Kapalı başarısızlığı sağlıyoruz, tahmin etmiyoruz.
        abort_if($org === null, 403, 'No organization context.');

        Tenancy::setCurrent($org->tenant);   // sunucudan elde edilen, request'ten değil

        return $next($request);
    }
}
Enter fullscreen mode

Exit fullscreen mode

Önemli olan kısım setCurrent() değil — değerin $request->user() üzerinden elde edilmesidir, $request üzerinden değil. Kullanıcı kimliği doğrulanmıştır; alt domain değil.

  request ──> [auth] ──> [SetTenantContext] ──> tenant-scoped routes
                              │
                              └── tenant = user's org  (NOT the URL/header)
Enter fullscreen mode

Exit fullscreen mode


Bunu bir test ile kilitleyin

Böyle bir sızıntı, sessizce geri dönebilir. Bu nedenle, düzeltme, biri bunu tekrar ortaya çıkarırsa bir testin ses çıkarabilmesi ile tamamlanmalıdır:

it('kullanıcının ait olmadığı bir kiracıyı asla çözmemelidir', function () {
            $userA = User::factory()->inOrganization($orgA = Organization::factory()->create())->create();
            $orgB  = Organization::factory()->create();

            // İstemci "org B" talep etse bile, kullanıcı A her zaman org A'da kalmalıdır.
            actingAs($userA)
                ->withHeader('X-Tenant', $orgB->tenant->getKey())
                ->get()
                ->assertOk();

            expect(Tenancy::current()->is($orgA->tenant))->toBeTrue();
        });
Enter fullscreen mode

Exit fullscreen mode


Sonuç

Bir değer veriyi kapsıyorsa, bu, istemcinin oluşturamayacağı bir kaynaktan gelmelidir. Kiracı çözümlemesi için bu, authenticated kullanıcının üyeliğini gerektirir — bu server tarafında doğrulanmalı ve eksik olduğunda kapalı başarısızlıkla sonuçlanmalıdır. Kimliğinizi, kim olduğunuzdan ziyade, ne talep ettiğinize göre çözün.

Kaynak: Orijinal Makale

Contents
  • TL;DR
  • Hata, bir cümlede
  • Güvenin nerede olmalı
  • Düzeltmenin şekli
  • Bunu bir test ile kilitleyin
  • Sonuç
PHP Ölmedi. Aksine – Verilerin Gösterdiği Gerçekler Şunlar
Projelerim için kendi kendine barındırılan bir REST API istemcisi geliştirdim, işte nedenleri
Master Boost: Laravel’in 2026 Yılında Kod Tabanınızı Okuyan AI Asistanı
2026’da yazılımcı istihdamı, yeni başlayanlar ve büyüyen işletmeler için büyük bir zorluk haline geldi.
cursor() veya chunk()
Bu Makaleyi Paylaş
Facebook Bağlantıyı Kopyala Yazdır
Paylaş
Önceki Makale OpenAI Yeni Donanımını Tanıtıyor… Codex İçin Ne Sunacak?
Sonraki Makale Teknomers: Undead Labs’ın Geleceği Tehlikede Mi?

Sanal Medya

FacebookBeğen
452Takip Et
PinterestSabitle
237Takip Et

Son Eklenenler

Teknomers: Undead Labs’ın Geleceği Tehlikede Mi?
Oyun
OpenAI Yeni Donanımını Tanıtıyor… Codex İçin Ne Sunacak?
Liste
İfşa Edilen iPhone 18 Pro Fotoğrafları Karşısında Şok Edici Gelişme
Liste
Deadpool’da Gizli Referanslarla Dolu Marvel Dönemi Başlıyor
Oyun
Meta’nın Gençler Gibi Davranarak Rakip Chatbotları Test Etme Skandalı
Genel
T-Mobile Müşterilerini Eski Planlarından Çıkarıyor
Liste
//

Siber güvenlik, yapay zeka ve savunma sanayiinden; finans ve sinema dünyasına uzanan geniş bir yelpaze. Teknomers; teknoloji, strateji ve yazılım dünyasını sade bir dille sizlerle buluşturuyor.

Kurumsal

  • Hakkımızda
  • Gizlilik politikası
  • Tanıtım Yazısı ve Backlink Hizmeti

Kategoriler

  • Teknoloji
  • Oyun
  • Sinema
  • Siber Güvenlik
  • Bilim
  • Finans
  • Dünyadan Güncel Haberler

Populer

  • TV'de Ücretsiz İzlenebilen Şifresiz Erotik Kanallar (2025 Güncel Frekans Listesi)

  • The Last of Us PC Kontrolleri: Hızlı Silah Değiştirme ve Tüm Tuşlar (2025)

  • Hogwarts Legacy'de Odaklanma İksiri Nasıl Yapılır?

Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Bizi Takip Et
© 2026 Teknomers. All Rights Reserved.
Welcome Back!

Sign in to your account

Kullanıcı Adı veya E-posta Adresi
Şifre

Şifrenizi mi unuttunuz?