Php İle Veritabanı Destekli Bir Blog Sistemi Nasıl Yapılır?

Php İle Veritabanı Destekli Bir Blog Sistemi Nasıl Yapılır?
Php İle Veritabanı Destekli Bir Blog Sistemi Nasıl Yapılır?

Php İle Veritabanı Destekli Bir Blog Sistemi Nasıl Yapılır?

Günümüzde web geliştirme dünyasında kendi içerik yönetim sisteminizi inşa etmek, hem programlama mantığını kavramak hem de projeleriniz üzerinde tam kontrol sahibi olmak için mükemmel bir yoldur. PHP ile veritabanı destekli bir blog sistemi nasıl yapılır sorusu, özellikle backend (sunucu taraflı) geliştirme öğrenmek isteyen yazılımcı adaylarının en sık karşılaştığı temel sorulardan biridir. Bu rehberde, 2026 standartlarına uygun, güvenli ve ölçeklenebilir bir blog yapısını adım adım inşa edeceğiz.

Bu eğitim boyunca modern PHP pratiklerini, PDO (PHP Data Objects) ile veritabanı yönetimini ve SQL Injection gibi yaygın güvenlik açıklarına karşı alınması gereken önlemleri öğreneceksiniz. Eğer temel seviyede HTML ve PHP bilginiz varsa, bu rehber sizi bir adım öteye taşıyarak dinamik bir içerik yönetim sistemi (CMS) mantığını kavramanıza yardımcı olacaktır.

Gereksinimler ve Ön Hazırlık

Projeye başlamadan önce geliştirme ortamınızın güncel olduğundan emin olmalısınız. 2026 yılı itibarıyla PHP 8.3 veya üzeri bir sürüm kullanmanız, performans ve güvenlik açısından kritik öneme sahiptir.

  • PHP 8.3+: Modern sözdizimi ve tip güvenliği için gereklidir.
  • MySQL veya MariaDB: Verilerinizi saklayacağınız ilişkisel veritabanı yönetim sistemi.
  • Web Sunucusu: Apache veya Nginx (XAMPP, Laragon veya Docker tercih edilebilir).
  • Kod Editörü: VS Code gibi eklenti desteği güçlü bir editör.

Başlamadan önce veritabanınızı oluşturun. MySQL üzerinde blog_db adında bir veritabanı açın ve aşağıdaki SQL komutu ile yazilar tablosunu oluşturun:

CREATE TABLE yazilar (
    id INT AUTO_INCREMENT PRIMARY KEY,
    baslik VARCHAR(255) NOT NULL,
    icerik TEXT NOT NULL,
    yayinlanma_tarihi TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Veritabanı Bağlantısı İçin PDO Kullanımı

PHP ile veritabanına bağlanırken artık eski mysql_* fonksiyonlarını kullanmamalıyız. PDO, hem güvenli olması hem de farklı veritabanı sürücülerini desteklemesi nedeniyle endüstri standardıdır. Aşağıdaki kod, veritabanı bağlantısını güvenli bir şekilde kurar.

Bu dosya, projenin geri kalanında veritabanı işlemlerini gerçekleştireceğimiz ana nesneyi ($pdo) oluşturur. PDO::ERRMODE_EXCEPTION ayarı, hataları yakalamamızı kolaylaştırır.

Veritabanından Yazıları Listeleme Adımları

Blog sisteminin ana sayfasında yazıları listelemek için veritabanından veri çekmemiz gerekir. Burada "Prepared Statements" (hazırlanmış ifadeler) kullanarak SQL Injection saldırılarını engelliyoruz.

Burada htmlspecialchars fonksiyonunu kullanarak, veritabanından gelen verilerin HTML olarak işlenmesini engelliyoruz. Bu, XSS (Cross-Site Scripting) saldırılarına karşı temel bir savunmadır.

Yeni Yazı Ekleme Formu ve İşleme

Kullanıcıların yazı ekleyebilmesi için bir HTML formu ve bu formu işleyen bir PHP dosyası gereklidir. Formdan gelen verileri asla doğrudan sorguya eklemeyin; her zaman parametre bağlama (binding) yöntemini kullanın.

Bu kod bloğunda :baslik ve :icerik yer tutucuları, veritabanı sorgusunu güvenli hale getirir. Kullanıcıdan gelen veri, sorgu yapısından ayrıştırıldığı için SQL enjeksiyonu imkansız hale gelir.

Veritabanı Yönetim Yöntemlerinin Karşılaştırılması

Yöntem Güvenlik Esneklik Önerilen Durum
PDO Çok Yüksek Yüksek Tüm modern projeler
MySQLi Yüksek Orta Sadece MySQL kullanılan eski projeler
mysql_* (Deprecated) Yok Düşük Asla kullanılmamalı
Kritik Güvenlik Uyarısı: Üretim ortamında (production) hata mesajlarını asla tarayıcıya yansıtmayın. display_errors ayarını Off konumuna getirin ve hataları bir log dosyasına kaydedin. Ayrıca, kullanıcı girdilerini her zaman doğrulayın (validation) ve temizleyin (sanitization).

Sıkça Sorulan Sorular

PDO kullanmak neden zorunludur?

PDO, veritabanı bağımsız bir yapı sunar ve SQL Injection açıklarına karşı yerleşik koruma sağlar. Modern PHP geliştirme standartları, veritabanı etkileşimi için PDO'yu zorunlu kılar.

XSS saldırısı nedir ve nasıl önlenir?

XSS, kötü niyetli kullanıcıların form alanlarına JavaScript kodu enjekte etmesidir. Bunu önlemek için verileri ekrana basmadan önce htmlspecialchars() fonksiyonu ile karakterleri kaçırmalısınız.

Blog sistemime yorum özelliği nasıl eklerim?

Yorumlar için ayrı bir yorumlar tablosu oluşturmalı ve yazilar tablosundaki id ile ilişkilendirmelisiniz (Foreign Key). Bu, ilişkisel veritabanı mantığının temelidir.

Veritabanı şifremi kod içinde saklamak güvenli mi?

Hayır, veritabanı bilgilerini kod içinde tutmak yerine .env dosyaları veya sunucu ortam değişkenleri kullanmalısınız. Git gibi versiyon kontrol sistemlerine bu bilgileri asla yüklemeyin.

PHP 8.3 ile gelen yenilikler blog yapımı için önemli mi?

Evet, PHP 8.3'teki performans iyileştirmeleri ve tip güvenliği özellikleri, daha temiz ve hatasız bir kod yazmanıza olanak tanır.

Sonuç

PHP ile veritabanı destekli bir blog sistemi oluşturmak, dinamik web geliştirmenin kapılarını aralayan temel bir adımdır. Bu rehberde PDO bağlantısı kurmayı, verileri listelemeyi ve güvenli bir şekilde veri eklemeyi öğrendiniz. Bir sonraki adımınız, bu sisteme bir kullanıcı giriş sistemi (authentication) eklemek veya yazıları düzenleyip silme (CRUD) işlemlerini tamamlamak olmalıdır.

Sorumluluk Reddi: Bu rehberdeki kod örnekleri eğitim amaçlıdır. Canlıya alacağınız projelerde şifreleme (password_hash), oturum yönetimi (session) ve gelişmiş girdi doğrulama kütüphanelerini (örneğin Respect/Validation) kullanmanız tavsiye edilir.

Php İle Veritabanı Destekli Bir Blog Sistemi Nasıl Yapılır?

Dinamik bir blog sistemi, modern web geliştirmenin temel taşıdır. Kullanıcıların içerik oluşturabildiği, bu içeriklerin veritabanında saklandığı ve anlık olarak ziyaretçilere sunulduğu bir yapı kurmak, PHP öğrenme sürecindeki en kritik eşiklerden biridir. Bu rehberde, basit bir blog yapısının ötesine geçerek, ölçeklenebilir ve güvenli bir mimariyi nasıl inşa edeceğinizi adım adım inceleyeceğiz.

Gereksinimler ve Ön Hazırlık

Bir blog sistemi geliştirmeye başlamadan önce çalışma ortamınızı hazırlamanız gerekir. Profesyonel bir geliştirici, yerel sunucu ortamında çalışırken şu araçları kullanmalıdır:

  • XAMPP veya Laragon: PHP ve MySQL sunucunuzu yönetmek için.
  • VS Code: Kod yazımı için önerilen editör.
  • Composer: İleride kullanacağınız kütüphaneler için paket yöneticisi.
  • Veritabanı Tasarımı: MySQL (MariaDB) üzerinde temel bir yazilar tablosu.

Veritabanı Bağlantısı İçin PDO Kullanımı

Eski yöntem olan mysql_* fonksiyonları artık desteklenmemektedir. PDO (PHP Data Objects), veritabanı işlemlerinde güvenlik ve esneklik sağlar. Aşağıdaki kod bloğu, güvenli bir veritabanı bağlantısı kurmanızı sağlar:



Veritabanından Yazıları Listeleme Adımları

Blogunuzun ana sayfasında verileri listelemek için SELECT sorgusunu kullanırız. Güvenlik için her zaman hazırlanan ifadeler (prepared statements) tercih edilmelidir.


$stmt = $pdo->query("SELECT id, baslik, icerik, olusturulma_tarihi FROM yazilar ORDER BY olusturulma_tarihi DESC");
while ($row = $stmt->fetch()) {
    echo "

" . htmlspecialchars($row['baslik']) . "

"; echo "

" . substr(htmlspecialchars($row['icerik']), 0, 150) . "...

"; }

Yeni Yazı Ekleme Formu ve İşleme

Kullanıcıdan veri alırken POST metodunu kullanmak zorunludur. Formdan gelen verileri doğrudan veritabanına göndermek, SQL Injection saldırılarına davetiye çıkarır.


if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $sql = "INSERT INTO yazilar (baslik, icerik) VALUES (?, ?)";
    $stmt = $pdo->prepare($sql);
    $stmt->execute([$_POST['baslik'], $_POST['icerik']]);
    echo "Yazı başarıyla eklendi.";
}

Veritabanı Yönetim Yöntemlerinin Karşılaştırılması

Blog sisteminizi geliştirirken kullanabileceğiniz farklı yaklaşımlar vardır. Aşağıdaki tablo, bu yöntemlerin verimlilik ve güvenlik açısından karşılaştırmasını sunar:

Yöntem Güvenlik Performans Öğrenme Eğrisi
PDO Çok Yüksek Yüksek Orta
MySQLi Yüksek Çok Yüksek Düşük
ORM (Eloquent vb.) Maksimum Orta Yüksek

Sık Yapılan Hatalar ve Çözümleri

1. Hata: Veri Doğrulama Yapmamak

Kullanıcının gönderdiği veriyi asla olduğu gibi kabul etmeyin. filter_var() fonksiyonu ile girdileri temizleyin.

2. Hata: Hata Mesajlarını Ekrana Basmak

Canlı bir sistemde display_errors = On ayarı kapalı olmalıdır. Aksi takdirde veritabanı yapınız dışarıdan görünebilir.

3. Hata: İndeksleme Eksikliği

Blog yazıları tablonuzda id alanı için PRIMARY KEY ve arama yapılacak alanlar için INDEX kullanmamak, sitenizin yavaşlamasına neden olur.

Veritabanı Şemasını Optimize Etme

İyi bir blog sistemi, sadece yazıları değil, aynı zamanda yazarlar ve kategorilerle ilişkilendirilmiş bir yapıya sahip olmalıdır. Normalizasyon kurallarına uyarak veritabanınızı şu şekilde yapılandırın:

  • Yazilar Tablosu: id, baslik, icerik, yazar_id, kategori_id, olusturulma_tarihi.
  • Kategoriler Tablosu: id, kategori_adi.
  • Yazarlar Tablosu: id, kullanici_adi, sifre_hash.

Bu yapıda, yazilar tablosundaki kategori_id alanı, kategoriler tablosundaki id ile ilişkilendirilmelidir (Foreign Key). Bu, ilişkisel veritabanı mantığının temelidir.

Veritabanı şifremi kod içinde saklamak güvenli mi?

Hayır, veritabanı bilgilerini kod içinde tutmak yerine .env dosyaları veya sunucu ortam değişkenleri kullanmalısınız. Git gibi versiyon kontrol sistemlerine bu bilgileri asla yüklemeyin.

PHP 8.3 ile gelen yenilikler blog yapımı için önemli mi?

Evet, PHP 8.3'teki performans iyileştirmeleri ve tip güvenliği özellikleri, daha temiz ve hatasız bir kod yazmanıza olanak tanır.

Sonuç

PHP ile veritabanı destekli bir blog sistemi oluşturmak, dinamik web geliştirmenin kapılarını aralayan temel bir adımdır. Bu rehberde PDO bağlantısı kurmayı, verileri listelemeyi ve güvenli bir şekilde veri eklemeyi öğrendiniz. Bir sonraki adımınız, bu sisteme bir kullanıcı giriş sistemi (authentication) eklemek veya yazıları düzenleyip silme (CRUD) işlemlerini tamamlamak olmalıdır.

Sorumluluk Reddi: Bu rehberdeki kod örnekleri eğitim amaçlıdır. Canlıya alacağınız projelerde şifreleme (password_hash), oturum yönetimi (session) ve gelişmiş girdi doğrulama kütüphanelerini (örneğin Respect/Validation) kullanmanız tavsiye edilir.

Blog Sistemlerinde Veri Yönetimi: İleri Seviye Yaklaşımlar

Basit bir blog sistemi kurmak, veritabanı ile uygulama arasındaki iletişimi anlamak için mükemmel bir başlangıçtır. Ancak sisteminiz büyüdükçe, veritabanı sorgularının verimliliği ve kodun sürdürülebilirliği kritik bir hal alır. Bu bölümde, profesyonel bir blog mimarisinde kullanmanız gereken ileri seviye yöntemleri inceleyeceğiz.

Veritabanı Yönetim Yöntemlerinin Karşılaştırılması

PHP dünyasında veritabanı etkileşimi için üç temel yöntem bulunur. Projenizin ölçeğine göre doğru yöntemi seçmek, ileride yaşanacak teknik borçlanmayı engeller.

Yöntem Güvenlik Esneklik Öğrenme Eğrisi
MySQLi (Procedural) Orta Düşük Kolay
PDO (PHP Data Objects) Yüksek Çok Yüksek Orta
ORM (Eloquent/Doctrine) Yüksek Yüksek Zor

Sık Yapılan Hatalar ve Çözümleri

Blog geliştirme sürecinde, özellikle yeni başlayanların yaptığı hatalar sistemin çökmesine veya güvenlik açıklarına yol açabilir. İşte en kritik üç hata:

1. Hata: Veri Doğrulama Yapmamak

Kullanıcıdan gelen veriyi (örneğin blog başlığı) doğrudan veritabanına kaydetmek, XSS saldırılarına davetiye çıkarır. Her zaman filter_var() veya htmlspecialchars() kullanarak veriyi temizleyin.

2. Hata: Hata Mesajlarını Ekrana Basmak

Canlı ortamda (production) veritabanı bağlantı hatalarını ekrana yazdırmak, veritabanı yapınızı ve dosya yollarınızı saldırganlara ifşa eder. Hataları bir log dosyasına yazmalı, kullanıcıya ise "Bir hata oluştu" şeklinde genel bir mesaj göstermelisiniz.

3. Hata: İndeksleme Eksikliği

Blog yazıları tablosunda yayinlanma_tarihi veya kategori_id gibi sütunlara indeks (INDEX) eklememek, yazı sayınız arttığında veritabanı sorgularınızın gözle görülür şekilde yavaşlamasına neden olur.

Veritabanı Şemasını Optimize Etme

Veritabanı şemasını tasarlarken sadece veriyi saklamayı değil, veriye nasıl erişeceğinizi de düşünmelisiniz. Bir blog sisteminde veritabanı performansını artırmak için şu stratejileri uygulayın:

  • Normalizasyon: Veri tekrarını önlemek için kategorileri ayrı bir tabloda tutun.
  • İlişkisel Bütünlük: Yabancı anahtarlar (Foreign Keys) kullanarak, silinen bir kategorinin yazılarını yetim bırakmayın.
  • Veri Tipleri: Başlıklar için VARCHAR(255), içerik metinleri için TEXT veya LONGTEXT kullanın. Gereksiz geniş veri tipleri bellek kullanımını artırır.
Profesyonel İpucu: Sorgularınızın performansını ölçmek için EXPLAIN komutunu kullanın. Bu komut, MySQL'in sorgunuzu nasıl işlediğini ve indeksleri kullanıp kullanmadığını size raporlar.

Blog Sistemime Yorum Özelliği Nasıl Eklerim?

Yorum sistemi, blogunuzu etkileşimli hale getirir. Bunun için yorumlar adında yeni bir tablo oluşturmanız gerekir. Bu tablo, yazi_id sütunu üzerinden yazilar tablosuna bağlanmalıdır.


CREATE TABLE yorumlar (
    id INT AUTO_INCREMENT PRIMARY KEY,
    yazi_id INT NOT NULL,
    kullanici_adi VARCHAR(100),
    yorum_metni TEXT,
    tarih TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (yazi_id) REFERENCES yazilar(id) ON DELETE CASCADE
);

Bu yapıda ON DELETE CASCADE kullanmak, ana yazı silindiğinde ona ait tüm yorumların otomatik olarak veritabanından temizlenmesini sağlar. Bu, veritabanı tutarlılığını korumak için en pratik yoldur.

Güvenlik: XSS Saldırısı Nedir ve Nasıl Önlenir?

XSS (Cross-Site Scripting), saldırganın bir web sayfasına zararlı JavaScript kodları enjekte etmesidir. Blog sistemlerinde kullanıcı yorumları veya yazı içerikleri üzerinden gerçekleştirilir.

Önleme Yöntemi: Veritabanından veriyi çekerken veya ekrana basarken mutlaka htmlspecialchars() fonksiyonunu kullanın. Bu fonksiyon, HTML karakterlerini (, ") güvenli karakterlere dönüştürerek tarayıcının bunları kod olarak değil, metin olarak algılamasını sağlar.


// Güvenli kullanım örneği
echo htmlspecialchars($row['yorum_metni'], ENT_QUOTES, 'UTF-8');

Bu basit fonksiyon, blogunuzu en yaygın web saldırılarından biri olan XSS'e karşı korumak için ilk savunma hattınızdır. Profesyonel projelerde ise HTML Purifier gibi kütüphaneler kullanarak daha karmaşık temizleme işlemleri yapmanız önerilir.

Blog Sistemlerinde Veri Yönetimi: İleri Seviye Yaklaşımlar

Bir blog sistemi kurarken sadece veriyi kaydetmek yeterli değildir; verinin nasıl organize edildiği, sorguların hızı ve sistemin ölçeklenebilirliği projenizin geleceğini belirler. İleri seviye bir yaklaşım, veritabanı işlemlerini iş mantığından ayırmayı gerektirir.

Veritabanı Yönetim Yöntemlerinin Karşılaştırılması

PHP dünyasında veritabanı yönetimi için üç ana yöntem mevcuttur. Projenizin büyüklüğüne göre doğru aracı seçmek kritik bir karardır.

Yöntem Güvenlik Performans Kullanım Zorluğu
MySQLi (Procedural) Orta Yüksek Kolay
PDO Çok Yüksek Yüksek Orta
ORM (Eloquent/Doctrine) Yüksek Düşük (Ek yük) Zor

PDO (PHP Data Objects), hem güvenlik (prepared statements) hem de veritabanı bağımsızlığı (MySQL, PostgreSQL, SQLite desteği) sunduğu için modern PHP geliştiricilerinin standart tercihidir.

Sık Yapılan Hatalar ve Çözümleri

Yeni başlayanlar genellikle işlevselliğe odaklanırken sistemin güvenliğini ve performansını göz ardı ederler. İşte en sık karşılaşılan üç hata:

1. Hata: Veri Doğrulama Yapmamak

Kullanıcıdan gelen her veri (form inputları, URL parametreleri) potansiyel bir tehdittir. Veriyi veritabanına göndermeden önce mutlaka filter_var() veya trim() gibi fonksiyonlarla temizleyin.

2. Hata: Hata Mesajlarını Ekrana Basmak

Üretim (production) ortamında display_errors = On ayarı açık kalmamalıdır. Veritabanı bağlantı hataları, tablo isimlerini veya sütun yapılarını saldırganlara ifşa edebilir. Hataları bir log dosyasında tutun.

3. Hata: İndeksleme Eksikliği

Blog yazıları arttıkça SELECT * FROM yazilar WHERE yazar_id = 5 gibi sorgular yavaşlar. Veritabanı tablonuzda sık arama yaptığınız sütunlara (id, tarih, kategori) INDEX eklemek, sorgu hızını %90 oranında artırabilir.

Veritabanı Şemasını Optimize Etme

İyi tasarlanmış bir şema, sistemin bakımını kolaylaştırır. Blog sisteminiz için şu optimizasyonları uygulayın:

  • Normalization (Normalizasyon): Yazarlar, kategoriler ve yazılar için ayrı tablolar oluşturun ve bunları FOREIGN KEY ile birbirine bağlayın.
  • Veri Tipleri: İhtiyacınızdan büyük veri tipleri kullanmayın. Örneğin, bir yazı başlığı için TEXT yerine VARCHAR(255) kullanmak veritabanı belleğini daha verimli kullanmanızı sağlar.
  • Tarih Formatları: Tarihleri her zaman TIMESTAMP veya DATETIME formatında tutun, bu sayede sıralama ve filtreleme işlemlerini veritabanı motoruna yaptırabilirsiniz.

Örnek Senaryo: Kategori Bazlı Filtreleme

Kullanıcıların belirli bir kategorideki yazıları görmesini sağlamak için dinamik bir sorgu yapısı kurmalısınız. İşte güvenli bir örnek:


// Kategori ID'sini al ve temizle
$kategori_id = filter_input(INPUT_GET, 'cat', FILTER_SANITIZE_NUMBER_INT);

$sql = "SELECT * FROM yazilar WHERE kategori_id = :cat_id ORDER BY tarih DESC";
$stmt = $pdo->prepare($sql);
$stmt->execute(['cat_id' => $kategori_id]);
$yazilar = $stmt->fetchAll(PDO::FETCH_ASSOC);

Bu kod bloğu, kullanıcıdan gelen cat verisini bir tamsayı olarak zorlar ve prepared statement kullanarak SQL Injection saldırılarını tamamen engeller.

PHP 8.3 ile Gelen Yenilikler Blog Yapımı İçin Önemli Mi?

PHP 8.3, tip güvenliği ve performans konusunda ciddi iyileştirmeler sunar. Özellikle readonly sınıflar ve geliştirilmiş json_validate fonksiyonu, bir blog sisteminin API katmanını güçlendirmek için oldukça değerlidir. Yazılım dünyasında güncel kalmak, sadece yeni özellikler değil, aynı zamanda güvenlik yamaları için de zorunludur.

Veritabanı şifremi kod içinde saklamak güvenli mi?

Kesinlikle hayır. Veritabanı kimlik bilgilerinizi (kullanıcı adı, şifre, host) asla doğrudan PHP dosyalarının içine yazmayın. Bunun yerine, proje kök dizininin dışında bulunan bir .env dosyası kullanın veya sunucu ortam değişkenlerinden (environment variables) yararlanın.


// Yanlış Yöntem
$db_pass = "sifre123";

// Doğru Yöntem (Örnek)
$db_pass = getenv('DB_PASSWORD');

Bu yöntem, kodunuzu bir versiyon kontrol sistemine (Git gibi) yüklediğinizde şifrelerinizin başkalarının eline geçmesini önler.

Blog Sistemime Yorum Özelliği Nasıl Eklerim?

Yorum özelliği, blogunuzun etkileşimini artıran en önemli unsurdur. Bunun için yazılarla ilişkili bir yorumlar tablosu kurmanız gerekir. Aşağıdaki SQL yapısı, her bir yorumun hangi yazıya ait olduğunu kesin olarak belirler:


CREATE TABLE yorumlar (
    id INT AUTO_INCREMENT PRIMARY KEY,
    yazi_id INT NOT NULL,
    kullanici_adi VARCHAR(100),
    yorum_metni TEXT,
    tarih TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (yazi_id) REFERENCES yazilar(id) ON DELETE CASCADE
);

Bu yapıda ON DELETE CASCADE kullanmak, ana yazı silindiğinde ona ait tüm yorumların otomatik olarak veritabanından temizlenmesini sağlar. Bu, veritabanı tutarlılığını korumak için en pratik yoldur.

Güvenlik: XSS Saldırısı Nedir ve Nasıl Önlenir?

XSS (Cross-Site Scripting), saldırganın bir web sayfasına zararlı JavaScript kodları enjekte etmesidir. Blog sistemlerinde kullanıcı yorumları veya yazı içerikleri üzerinden gerçekleştirilir.

Önleme Yöntemi: Veritabanından veriyi çekerken veya ekrana basarken mutlaka htmlspecialchars() fonksiyonunu kullanın. Bu fonksiyon, HTML karakterlerini (, ") güvenli karakterlere dönüştürerek tarayıcının bunları kod olarak değil, metin olarak algılamasını sağlar.


// Güvenli kullanım örneği
echo htmlspecialchars($row['yorum_metni'], ENT_QUOTES, 'UTF-8');

Bu basit fonksiyon, blogunuzu en yaygın web saldırılarından biri olan XSS'e karşı korumak için ilk savunma hattınızdır. Profesyonel projelerde ise HTML Purifier gibi kütüphaneler kullanarak daha karmaşık temizleme işlemleri yapmanız önerilir.

Bu yazıya tepkinizi paylaşın:
Zeynep Sönmez

Dijital içerik üretimi ve teknik rehber hazırlama süreçlerinde uzmanlaşmış bir editörüm. Okuyucuların hayatını kolaylaştıran, adım adım uygulanabilir kılavuzlar yazmayı hedefliyorum.

Yorumlar (0)

Yorum Yaz