RBN Core - Framework v0.9.7 76 belge

Core/Http — istek/yanıt motoru, doğrulama ve form güvenliği

Doğrulanan kod tabanı: d49b4413 (dal feat/fw-license-master) · Tarih: 2026-10-05 · Yayın: 0.9.7 = bu commit + sonrası; belge yalnız doğrulama anındaki kodu anlatır
Kaynak klasör: Core/Http/ — 36 *.php = 5 kök + 17 Engine/ + 14 Security/.
Spek §1 "≥20 php alan için alt dal belgesi" kuralı gereği bu klasör üç belgeye
bölünmüştür: kök dosyalar burada, Engine/ → Engine.md,
Security/ → Security.md.
Envanter: 36 dosyanın 36'sı anlatıldı (5 + 17 + 14).

1. Ne işe yarar, kim kullanır

İsteği okuyan (Request), yanıtı yazan (Response), kullanıcıya mesaj
iletiren (AlertService), dışarıya istek atan (RemoteRequest) ve kuralları
çalıştıran (Validator) beş sınıfı bir araya getirir. Hepsi trait'lere
bölünmüştür; trait'ler Engine/ altındadır.

Kimler çağırır: tüm controller'lar (request(), response(), alert()
yardımcıları), ValidationTrait → FormService, Core/Routes/Mappings/web.php
(ApiGuard), Packages/RbnEmail ve ajan entegrasyonları (RemoteRequest),
Packages/RbnFile (UploadedFile).

2. Klasör/dosya envanteri — kök (5/5)

Dosya Görev Önemli public yöntemler
Request.php İstek anlık görüntüsü; $_POST/$_GET/$_FILES/$_SERVER yakalar, 5 trait kullanır. __construct(), getJsonData(): array, static capture(): self
Response.php Yanıt motoru; 3 trait (Header/Content/Redirect) kullanır. static getInstance(): self, send(): void
AlertService.php Tek mesaj kanalı (kilitli). Session/cookie saklar, AJAX'ta JSON, normalde yönlendirme. static get(): self, send(string $type,string $message,?string $redirectUrl=null,?string $message2=null,array $data=[]): void
RemoteRequest.php cURL tabanlı dış HTTP istemcisi. request(string $method,string $url,array $params=[],array $headers=[],bool $isJson=true,array $options=[]): array, get(...), post(...)
Validator.php Kural motoru; kural adı → validateX() metodu eşlemesi. __construct(array $data,array $rules,array $messages=[]), static make(...), fails(): bool, errors(): array, validated(): array, validate(): array, unknownRules(): array

Alt dal belgeleri:

Alt klasör *.php Belge Kapsama
Engine/ 17 Engine.md 17/17
Security/ 14 Security.md 14/14

3. Akış (kök sınıfların bağladığı zincir)

$request = request()                      Base/Web yardımcısı → Request::capture()
 └─ Request::__construct()  $_POST/$_GET/$_FILES/$_SERVER anlık görüntüsü
     ├─ InputTrait        (girdi toplama)              → Engine.md §2.2
     ├─ DetectionTrait    (method/içerik tipi)          → Engine.md §2.2
     ├─ ContextTrait      (IP/proje/UA/başlık)          → Engine.md §2.2
     ├─ FileTrait         (dosya girdileri)             → Engine.md §2.2
     └─ ValidationTrait   (shield + validate)           → Engine.md §3.1

$response = response()                    Response::getInstance()
 ├─ HeaderTrait      status/header/cookie  → Engine.md §2.3
 ├─ ContentTrait     body/json/success     → Engine.md §2.3
 └─ RedirectTrait    redirect + güvenliHedef süzgeci  → Engine.md §3.2

alert()->error('...', '/panel')           AlertService::get()->send()
 ├─ NotificationTrait kısa yolları       → Engine.md §2.5
 ├─ StorageTrait     session/cookie       → Engine.md §2.5
 └─ send() → response()->guvenliHedef($redirectUrl)  (AlertService.php:70)

Validator::make(all(), $rules) kural adını validate<Rule> metoduna çevirir
(Validator.php:104); eşleşme yoksa kural kayıt + error_log ile
geçilmez, devam eder (Validator.php:143).

4. Yapılandırma / ayar anahtarları

Anahtar Yer Varsayılan / not
security.form_input_mode Engine/Traits/Request/ValidationTrait.php:178 enforce; kabul: off\|log\|enforce. Okunamaz/bozuk → enforce (fail-closed)
external-api.php proje ayarı Security/ApiGuard.php:49 enabled, allowed_origins, allow_query_token, api_key, keys[]
Cookie bayrakları Engine/Traits/Response/HeaderTrait.php:56 httpOnly=true, sameSite='Lax', secure null ise RequestEnvironment::isHttpsRequest()

Ayrıntılı tablo: Engine.md §4 ve Security.md §4.

5. Tuzaklar ve kurallar (kök katman)

  1. AlertService::send() yönlendirme süzgeci zorunludur. AJAX yolunda
    redirect() hiç çağrılmadığı için $redirectUrl elle
    guvenliHedef()'ten geçirilir (AlertService.php:70); bu satır
    silinirse AJAX mesajları açık yönlendirme açığıdır.
  2. Validator bilinmeyen kuralı sessizce geçmez (kayıt + error_log +
    devam) — bu, tavan katmanında KVKK onay kutusu doğrulamasının
    uygulanmadığı canlı bir hatayı yakalamıştır.
  3. Tek giriş noktası ilkesi: dışarıdan korumasız ham gövde okuma yolu
    rawAll()'dır; rawInput() protected'tır
    (Engine/Traits/Request/InputTrait.php:23).
  4. Response ve AlertService tekil (singleton); BaseComponent::__get()
    bunları $this->response / $this->request adıyla açar
    (../Base/README.md).

6. Örnek (gerçek koddan)

// doğrulamalı + kalkanlı form (ValidationTrait.php:125 sözleşmesi)
$data = request()->form(['email' => 'required|email'], ['csrf' => true]);

// JSON yanıt
return response()->success($data, 'Kaydedildi');

// güvenli yönlendirme
return response()->redirect('/panel/blog');

7. İlgili belgeler