Okuma alanı · 38 bölüm · Tamamlandı
Kuralları değil,
mekanizmayı öğrenin.
PHP güvenliğini temel kavramlardan kimlik doğrulama ve kriptografiye kadar, birbirinin üzerine kurulan bölümlerle öğrenin.
Birinci bölümden başlaYayımlanan bölümler
İçindekiler
Doğrusal okumayı öneriyoruz. Her bölüm, önceki kavramları kullanır; yine de sahada ihtiyaç duyduğunuz başlığa doğrudan geçebilirsiniz.
Temeller ve Metodoloji
5 bölümPHP Güvenlik Temelleri
Bu bölümü bitirdiğinizde, tekil açıkları ezberlemeden önce her açığın altında yatan ortak yapıyı — güven sınırlarının ihlalini — görebileceksiniz.
Tehdit Modelleme (Threat Modeling)
Bir açığı bulduktan sonra düzeltmek yerine, tasarım aşamasında sistematik olarak "ne ters gidebilir?" sorusunu sorabilecek; veri akışlarını güven sınırlarına göre haritalayıp riskleri koda girmeden yakalayabileceksiniz.
Güvenli Yazılım Yaşam Döngüsü (Secure SDLC)
Güvenliği tek bir "test aşaması" olmaktan çıkarıp yazılım yaşam döngüsünün her evresine gömen bir zihniyet ve pratik kontrol seti edineceksiniz.
Girdi Doğrulama (Input Validation)
Girdi doğrulamayı bir "güvenlik sihri" değil, güven sınırında uygulanan sistematik bir sözleşme olarak kavrayacak; doğrulamanın ne olduğunu ve daha önemlisi ne olmadığını (bir kodlama/kaçış yerine geçmediğini) ayırt edeceksiniz.
Çıktı Kodlama (Output Encoding)
"Kaçış" (escaping) ve "kodlama" (encoding) kavramlarını bir bağlam problemi olarak kavrayacak; aynı verinin HTML, HTML-öznitelik, JavaScript, URL ve CSS bağlamlarında neden farklı biçimde kodlanması gerektiğini göreceksiniz. Bu bölüm, XSS (Bölüm 7) bölümünün teorik temelidir.
Enjeksiyon Sınıfı Açıklar
6 bölümSQL Injection
SQL Injection'ı ezberlenmiş bir "kaçış fonksiyonu" olarak değil, bir bağlam karışması problemi olarak kavrayacak; her varyantını (klasik, kör, ikinci derece, kolon/ORDER BY bağlamı) aynı kök nedene indirgeyebileceksiniz.
Cross-Site Scripting (XSS)
XSS'i tek bir açık değil, üç farklı mekanizmaya (reflected, stored, DOM) sahip bir sınıf olarak kavrayacak; "kullanıcının tarayıcısında saldırganın kodunu çalıştırmak" hedefinin neden bu kadar yıkıcı olduğunu ve katmanlı savunmanın (kodlama + CSP + sanitization) nasıl kurulduğunu göreceksiniz.
Command Injection (Komut Enjeksiyonu)
Komut enjeksiyonunu, kabuğa (shell) veri gönderen her yolun bir risk olduğu bir sınıf olarak kavrayacak; escapeshellarg ile escapeshellcmd arasındaki hayati farkı, "kaçış" yaklaşımının neden çoğu zaman yanlış çözüm olduğunu ve kabuğu tamamen aradan çıkarmanın neden doğru çözüm olduğunu göreceksiniz. Ayrıca dolaylı komut enjeksiyonunu (bir kütüphane üzerinden) inceleyeceğiz.
Server-Side Template Injection (SSTI)
SSTI'yi, "kullanıcı verisini şablona veri olarak vermek" ile "kullanıcı verisini şablonun kendisi (kod) yapmak" arasındaki hayati farkın ihlali olarak kavrayacak; sunucu tarafı şablon motorlarının neden doğrudan RCE'ye açıldığını ve sandbox'ların neden yeterli bir savunma olmadığını göreceksiniz.
XML External Entity (XXE)
XXE'yi, XML'in tarihsel bir özelliğinin (harici varlıklar) kötüye kullanımı olarak kavrayacak; PHP'de bu açığın neden büyük ölçüde yapılandırma meselesi olduğunu, libxml sürüm geçmişini ve modern PHP'de bile insanı yakalayan LIBXMLNOENT tuzağını göreceksiniz. XXE'nin yalnızca dosya okuma değil, SSRF ve DoS'a da açıldığını inceleyeceğiz.
Unsafe Deserialization & PHP Object Injection
Güvensiz deserializasyonu, "veriyi geri yükleme"nin masum görünen ama en tehlikeli PHP açıklarından birine dönüşmesi olarak kavrayacak; unserialize'ın neden yalnızca veri değil nesne ürettiğini, magic method'ların bu nesneleri nasıl otomatik "canlandırdığını" ve gadget/POP zincirlerinin nasıl kod çalıştırmadan mevcut kodu silah olarak kullandığını göreceksiniz.
Kimlik, Yetki ve Oturum
7 bölümAuthentication (Kimlik Doğrulama)
Kimlik doğrulamayı bir "giriş formu" olarak değil, kimliği kanıtlama süreci olarak kavrayacak; kimlik doğrulama (authN) ile yetkilendirme (authZ) arasındaki farkı, sürecin en sık kırıldığı noktaları (bozuk kimlik bilgisi karşılaştırması, kullanıcı numaralandırma, kaba kuvvet, parola sıfırlama) ve MFA'nın rolünü göreceksiniz.
Password Security & Cryptography
Kodlama, şifreleme ve hash'leme arasındaki hayati farkı; parolaların neden şifrelenmemesi, hash'lenmesi gerektiğini; tuz (salt), pepper, yavaş/bellek-zor hash'lerin (bcrypt/Argon2) rolünü; ve modern PHP'de kriptografiyi (password, libsodium) doğru kullanmayı öğreneceksiniz. Kendi kriptonuzu yazmamanın neden bir kural olduğunu göreceksiniz.
Authorization & Access Control (Yetkilendirme ve Erişim Kontrolü)
Yetkilendirmeyi, kimlik doğrulamadan ayrı ve ondan sonra gelen bir katman olarak kavrayacak; dikey ve yatay yetki yükseltmeyi ayırt edecek; "deny by default" ve "sunucu tarafında, her istekte zorla" ilkelerini ve bunların neden OWASP'ın 1 numaralı riskini (Broken Access Control) çözdüğünü göreceksiniz.
Insecure Direct Object Reference (IDOR)
IDOR'u, "bir kullanıcının başka bir kullanıcının nesnesine, yalnızca kimliğini değiştirerek erişmesi" olarak kavrayacak; en kritik dersi — rastgele/UUID kimlikler IDOR'u çözmez, nesne-düzeyi yetkilendirme çözer — içselleştireceksiniz. Bu, OWASP API Güvenliği listesinin 1 numaralı riskidir (BOLA).
Session & Cookie Security
Oturumu, sunucunun durumu tuttuğu ve istemcinin yalnızca bir "anahtar" (session ID) taşıdığı bir mekanizma olarak kavrayacak; o anahtarın çalınması (hijacking), sabitlenmesi (fixation) ve tahmin edilmesi (prediction) saldırılarını; ve çerez bayraklarının (HttpOnly, Secure, SameSite) her birinin hangi saldırıyı kapattığını göreceksiniz.
Cross-Site Request Forgery (CSRF)
CSRF'i, "tarayıcının, kurbanın oturum çerezini çapraz-site bir isteğe otomatik eklemesi" mekanizması olarak kavrayacak; senkronizasyon token, double-submit, SameSite ve Origin/Referer savunmalarının her birinin nasıl çalıştığını; ve XSS'in (Bölüm 7) CSRF token savunmasını neden içeriden atlattığını göreceksiniz.
Business Logic Vulnerabilities & Race Conditions
İş mantığı açıklarını, "kod doğru çalışıyor ama iş kuralları istismar edilebiliyor" durumu olarak kavrayacak; race condition'ları (TOCTOU, eşzamanlılık) ve bunların neden PHP'de de geçerli olduğunu (shared-nothing miti) göreceksiniz. Bu, Kısım III'ü (Kimlik, Yetki ve Oturum) kapatan bölümdür.
Dosya, Kaynak ve Sunucu
3 bölümFile Upload Security
Dosya yükleme açığını, "saldırgan çalıştırılabilir içerik yükleyebiliyor ve o dosya çalıştırılabiliyor" koşulunun birleşimi olarak kavrayacak; MIME/uzantı doğrulamasının neden yetersiz olduğunu; ve savunmanın bu iki koşuldan birini kırmak olduğunu göreceksiniz.
File Inclusion (LFI/RFI) & Path Traversal
Path traversal'ı, LFI'yi ve RFI'yi tek bir kök nedene — "kullanıcı, bir dosya işleminde kullanılan yolu kontrol ediyor" — bağlayacak; kanonikleştirmenin (kontrolden önce normalize etme) neden belirleyici olduğunu; ve LFI'nin salt dosya okumadan RCE'ye nasıl tırmandığını göreceksiniz.
Server-Side Request Forgery (SSRF)
SSRF'i, "saldırganın, sunucuyu kendi seçtiği bir hedefe istek yaptırması" olarak kavrayacak; sunucunun neden değerli bir proxy olduğunu (iç ağ, bulut metadata); URL doğrulamanın neden bu kadar zor olduğunu (DNS rebinding); ve en az yetkinin (Capital One dersi) neden SSRF'in etkisini belirlediğini göreceksiniz. Bu, Kısım IV'ü kapatan bölümdür.
API ve Modern Servis Güvenliği
4 bölümAPI & REST Security
API güvenliğinin neden ayrı bir disiplin olduğunu; API'lerin klasik açıkları nasıl yoğunlaştırıp büyüttüğünü; ve API'ye özgü yeni riskleri (aşırı veri ifşası, rate limiting, API envanteri/shadow API) OWASP API Top 10 çerçevesiyle kavrayacaksınız. Bu, Kısım V'i (API ve Modern Servis Güvenliği) açan bölümdür.
JWT Security
JWT'yi, "imza ile bütünlüğü korunan, taşıyıcı bir kimlik belgesi" olarak kavrayacak; imza doğrulamasını atlatan üç saldırı sınıfını (alg:none, algoritma karışıklığı, zayıf sır) ve tek en önemli savunmayı — algoritmayı token'dan okuma, açıkça beyaz listele — göreceksiniz.
OAuth 2.0 / OIDC Security
OAuth 2.0 (yetkilendirme) ile OIDC (kimlik) arasındaki farkı; authorization code akışını ve onu koruyan üç parametreyi (redirecturi, state, PKCE); ve OIDC güvenliğinin neden bir zincir olduğunu — kimlik sağlayıcı (IdP) özneyi doğrulamalı, güvenen taraf (RP) token'ı doğrulamalı — göreceksiniz.
Secrets Management (Sır Yönetimi)
Sırların (kimlik bilgileri, API anahtarları, imzalama/şifreleme anahtarları) neden "kodda saklanamaz" olduğunu; version control ve .env tuzaklarını; sır yöneticilerini, rotasyonu ve en az yetkiyi; ve bir sır sızdığında ne yapılacağını öğreneceksiniz. Bu, Kısım V'i (API ve Modern Servis Güvenliği) kapatan bölümdür.
Altyapı Sertleştirme
5 bölümphp.ini Hardening & PHP-FPM
PHP'nin çalıştırma modellerini (modphp, PHP-CGI, PHP-FPM) ve neden PHP-FPM'in tercih edildiğini; güvenlik açısından kritik php.ini direktiflerini; ve disablefunctions/openbasedir'in birer derinlemesine savunma katmanı (mutlak sınır değil) olduğunu göreceksiniz. Bu, Kısım VI'yı (Altyapı ve Dağıtım Güvenliği) açan bölümdür.
Apache & Nginx Hardening
Web sunucusunun (Apache/Nginx) güvenlik rolünü; nginx + PHP-FPM'in doğru yapılandırılmasının (özellikle tryfiles/PATHINFO) neden hayati olduğunu; güvenlik başlıklarını, TLS'yi ve bilgi ifşasını (sürüm, .git, dizin listeleme) sertleştirmeyi öğreneceksiniz.
Linux İzinleri (Permissions & Privilege)
Unix izin modelini (kullanıcı/grup/diğer, rwx, sahiplik); web sunucusu kullanıcısının neden düşük yetkili olması gerektiğini; dosya izinlerinin bir web shell'in kalıcılığını nasıl belirlediğini; ve SUID ikili dosyalarının bir yetki-yükseltme yüzeyi olduğunu (PwnKit) göreceksiniz.
Docker & Container Security
Container'ların ne izolasyon sağladığını ve ne sağlamadığını; "container içinde root olma", privileged mode ve Docker soketi ifşasının neden host devrine yol açtığını; ve derinlemesine savunmanın (non-root, düşürülen capabilities, minimal imaj) bir container kaçışını nasıl zorlaştırdığını göreceksiniz. Bu bölüm Kısım VI'nın altyapı katmanını container'lara taşır.
Composer / Dependency & Supply Chain Security
Modern bir PHP uygulamasının yüzlerce geçişli bağımlılığı sizin yetkinizle çalıştırdığını; tedarik zinciri saldırı türlerini (ele geçirilmiş upstream, typosquatting, bağımlılık karışıklığı, terk edilmiş paket); ve savunmaları (kilit dosyası + bütünlük, SCA, minimal bağımlılık, commit imzalama, izole CI) öğreneceksiniz. Bu, Kısım VI'yı (Altyapı ve Dağıtım Güvenliği) kapatan bölümdür.
Operasyon, Tespit ve Vaka
8 bölümLogging & Monitoring (Loglama ve İzleme)
Loglama ve izlemenin neden tespit ve yanıtın temeli olduğunu; ne loglanacağını (ve ne loglanmayacağını); log bütünlüğü, merkezileştirme ve uyarının önemini; ve "göremediğinizi savunamazsınız" ilkesini göreceksiniz. Bu, Kısım VII'yi (Operasyonel Güvenlik ve İleri Konular) açan bölümdür.
Incident Response & Disclosure (Olay Müdahalesi ve Açıklama)
Bir güvenlik olayına yapısal müdahaleyi (NIST yaşam döngüsü); kanıt korumanın ve kök neden analizinin önemini; ihlal açıklamasının yasal ve etik yükümlülüklerini; ve "gizlemenin ihlalin kendisinden daha kötü olduğunu" (Uber/Sullivan) öğreneceksiniz.
Secure Deployment & CI/CD
Dağıtım hattının (CI/CD pipeline) neden güçlü bir saldırı yüzeyi olduğunu; build sisteminin ele geçirilmesinin (SolarWinds) meşru imzalı bir artefakta kötü kod enjekte edebildiğini; ve savunmaları (en az yetkili/izole CI, build bütünlüğü/provenance, sır koruma) öğreneceksiniz.
Web Shell / Backdoor / Malware Analizi
Web shell'i, birçok açığın "ödülü" olarak; tehlikeli fonksiyon + güvenilmez girdi bileşimini; magic-string backdoor'ları; ve en önemlisi davranışsal tespiti (web sürecinin alt süreç doğurması) öğreneceksiniz. Bu bölüm savunma ve tespit odaklıdır; silahlaştırılmış shell kodu vermez.
WordPress Güvenliği
WordPress güvenliğinde asıl riskin çekirdekte değil eklenti/tema ekosisteminde olduğunu; WordPress'in güvenlik API'lerini (nonce, capability, sanitize/escape, $wpdb->prepare) doğru kullanmayı; ve sertleştirme ile ekosistem yönetimini öğreneceksiniz. Bu, framework bölümlerini açar.
Laravel Güvenliği
Laravel'in güvenli varsayılanlarını (Eloquent, Blade, CSRF, hashing) ve onları bozan kullanımları; ve framework-özgü en büyük riski — üretimde açık debug mode — Ignition RCE (CVE-2021-3129) üzerinden öğreneceksiniz.
Symfony Güvenliği
Symfony'nin güvenli varsayılanlarını (Twig otomatik kaçış, Security bileşeni/Voter, CSRF, secrets vault) ve framework-özgü en büyük riski — üretimde ifşa olan Profiler/debug mode — öğreneceksiniz. Bu, framework kısmını kapatır.
Kapanış: Tekrarlayan Kök Nedenler ve CVE Derlemesi
Gerçek vakaları tek bir haritada birleştirerek tekrarlayan kök nedenleri ve savunmacının zihinsel modelini göreceksiniz.
Tamamlandı
PHP Güvenliği El Kitabı'nın tüm bölümleri yayında.
Temellerden gerçek CVE analizlerine uzanan eksiksiz okuma rotası artık hazır.