🇹🇷
Merhaba!
SQL Düzenleyicisi
  • 🥳Merhaba!
  • 🔃API
    • API'ler
      • Alan Adı Sorgulama WHOIS API
      • İp Adresi Sorgulama API
      • Rastgele Kedi Resmi Gösteren API
      • Lokasyon
        • Ülkeler API
        • Şehirler API
      • T.C. Kimlik Doğrulama API
  • Hosting Solution
    • Cyberpanel
      • 500 Internal Server Hatası (Cyberpanel)
  • 🐻‍❄️LARAVEL
    • Laravel Projesi Oluşturma
    • Anasayfa Düzenleme ve Sayfa Ekleme
  • 🔳ERP TARAFI
    • ERP Nedir ?
    • ERP İş Süreçleri
    • Birimler
      • Üretim
      • Satış
      • Muhasebe
      • Stok Yönetimi
      • Mali Yönetimi
      • Müşteri Hizmetleri (Destek)
      • İnsan Kaynakları (Personel)
      • Proje Yönetimi
    • Kullanılan Terimler
      • Amortisman
  • 💻SQL Tarafı
    • Çalışmalar ve Notlar
      • Tablo Boyutlarını Öğrenme
      • Veritabanı Arası Sorgulama
      • Tabloların Satır Sayısını Bulma
      • Tablodaki Triggerları Açma&Kapatma
      • Tablo Bağlantısı (Tablo Bağlama)
      • Tabloların Satır Sayısını Bulma
    • Konular
      • Sorgulamalar
        • SELECT
        • FROM
        • WHERE
        • LIKE
        • JOINLER
          • INNER JOIN
          • FULL OUTER JOIN
          • RIGHT JOIN
          • LEFT JOIN
        • GROUP BY
        • HAVING
        • ORDER BY
        • LIMIT
        • COUNT
        • SUM
        • AVG
        • MIN
        • MAX
        • CASE
        • DISTINCT
        • SUBQUERY
        • SUBSTRING
        • TRUNCATE
      • String Fonksiyonlar
        • LEN
        • STRING_SPLIT
        • CHARINDEX
        • SUBSTRING
        • REPLACE
        • LOWER/UPPER
        • TRIM
        • LEFT/RIGHT
        • ASCII/CHAR
        • CONCAT
      • Zaman Fonksiyonları
        • DAY, MONTH, YEAR
        • DATEFROMPARTS
        • ISDATE
        • DATEADD
        • DATENAME
        • DATEPART
        • DATETIME
        • DATEDIFF
      • Matematiksel Fonksiyonlar
        • ROUND
        • FLOOR
        • DEGRESS
        • ACOS
        • ASIN
        • ATAN
        • ATN2
        • RAND
        • RAD
        • ABS/SIGN
        • FLOOR/CEILING
      • Döngüler
        • FOR
        • WHILE
      • Prosedür
        • Prosedür Nasıl Yazılır
      • Trigger
        • Triger Nasıl Yazılır
      • Index
        • Index Nasıl Yazılır
      • Cursor
        • Cursor Nasıl Yazılır
      • Fonksiyon Konuları
        • User Defined Functions
        • Aggregate Functions
      • Veritipleri ve Boyutları
      • İlişkisel Veritabanı
    • Dosyalar & Kaynaklar
      • SQL Veri Tipleri
      • T-SQL Join Tipleri
      • SQL Cheat Sheet
    • SQL Hataları ve Çözümleri
      • String or binary data would be truncated
      • Subquery returned more than 1 value.
      • Conversion failed when converting from a character string to uniqueidentifier
      • The multi-part identifier could not be bound
      • Arithmetic overflow error converting numeric to data type numeric
  • 💯ANADIL
    • Anadil Nedir ?
    • Çalışmalar ve Notlar
      • Cff
        • Cff İle Adını Alıp Kodunu Yazdırma
      • Şube Kodu İşaretlendiğinde ComboBox'ın Kapatılması.
      • Parametre İşaretlendiğinde TabSheet'te ki Grid'in kapatılması.
      • İf
        • İf İle Boş Kontrol
        • İf İle Uzunluk Kontrolü
      • Grid
        • Grid PushButton Kullanımı
        • Grid Oluşturma
      • Formdaki Gride Koşul Ekleme(FTC)
      • Yetki Servisi Çağırma
      • ComboList Doldurma
    • Kütüphane
      • RS32
        • Fonksiyonlar
          • BuildInsertStm
          • BuildDeleteStm
          • BuildSelectStm
          • BuildUpdateStm
          • PrepareStmDirect
          • ExecuteStmDirect
        • Metotlar
          • AddOrderBy
          • AddGroupBy
          • AppendToStm
      • CFF
        • Fonksiyonlar
        • Metotlar
      • Kontrol Nesneleri
        • ListBox ve ComboBox
          • AddToList
          • SelectTextInList
      • Diğer
        • IsNull
  • 🔬.NET TARAFI
    • .NET Nedir ?
    • Konular
      • Değişkenler
        • Boolean (Bool)
        • Byte
        • Char
        • Integer (INT)
        • Long
        • Single
        • Double
        • Decimal
        • String
        • Object
  • 😎PHP TARAFI
    • PHP Nedir ?
    • Konular
      • Temel Söz Dizimi
        • Değişkenler
        • Operatörler
        • Koşullar
        • Fonksiyonlar
        • Döngüler
        • Diziler
        • String İşlemleri
      • Form İşlemleri
        • Form Verilerini Alma
        • Form Verilerini Kontrol Etme
        • Form Verilerini İşleme
        • Form Alanlarına Ön Tanımlı Değerler Atama
        • Form Güvenliği
      • Veritabanı İşlemleri
        • Veritabanına Bağlanma
        • Veri Ekleme
        • Veri Sorgulama
        • Veri Güncelleme
        • Veri Silme
        • Veri Okuma
        • Transaksiyonlar
        • Veritabanı Bağlantılarını Yönetme
      • Sınıflar ve Nesneler
        • OOP İlkeleri
        • Autoloading
        • Ad alanları (Namespaces)
        • Statik Yöntemler ve Özellikler (Static Methods and Properties)
        • Soyut Sınıflar ve Yöntemler (Abstract Classes and Methods)
        • Arayüzler (Interfaces)
        • Miras (Inheritance)
        • Sınıflar ve Nesnelerin Temelleri
        • Kurucu Yöntemler
      • Güvenlik
        • SQL Enjeksiyonu
        • XSS (Cross-Site Scripting)
        • DoS (Denial of Service) Saldırıları
        • CSRF (Cross-Site Request Forgery)
        • Güvenli Parola Depolama
        • Dosya Yükleme
      • Dosya İşlemleri
      • API Entegrasyonları
        • API Nedir ?
        • RESTful API Nedir?
        • API İstekleri
        • API Yanıtları
        • API Entegrasyon Örnekleri
        • API Anahtarları
      • Framework
        • MVC Tasarım Deseni
        • Yönlendirme
        • Şablonlar
        • Veritabanı Erişimi
        • Güvenlik
        • API Entegrasyonları
        • Oturum Yönetimi
        • Test
        • Performans
        • Paket Yönetimi
  • 🎛️FRAMEWORK TARAFI
    • Framework Nedir?
    • Konular
      • Framework Türleri
      • Framework Avantajları ve Dezavantajları
      • Framework Kullanımı ve Örnekleri
      • Framework vs Kütüphane
      • Framework vs Platform
      • Framework vs API
      • Framework ve Tasarım Kalıpları
      • Framework ve MVC Mimari
      • Framework ve ORM
      • Framework ve Web Geliştirme
      • Framework ve Mobil Geliştirme
      • Framework ve Oyun Geliştirme
      • Framework ve Veri Bilimi
      • Framework ve Yapay Zeka
      • Framework Geliştirme Süreci
      • Framework Test Etme ve Hata Ayıklama
Powered by GitBook
On this page

Was this helpful?

  1. PHP TARAFI
  2. Konular
  3. Güvenlik

CSRF (Cross-Site Request Forgery)

CSRF (Cross-Site Request Forgery), web uygulamaları güvenliği açısından önemli bir konudur. Bu saldırı türünde, bir web sitesine kayıtlı kullanıcının, kötü niyetli bir saldırgan tarafından, kullanıcının izni olmadan istenmeyen işlemler gerçekleştirilir. Bu tür saldırılarda, saldırgan, kullanıcının bilgisi olmadan, kullanıcının kimliği ile web sitesine istek gönderir ve böylece kullanıcının hesabında istenmeyen işlemler gerçekleştirir.

Örneğin, bir kullanıcının banka hesabında para transferi yapmak için kullanabileceği bir web uygulaması varsa, bir saldırganın bu uygulamaya erişebilmesi ve kullanıcının bilgisi olmadan para transferi yapabilmesi mümkündür. Bu saldırı, kullanıcının güvenliğini riske atar ve ciddi maddi kayıplara neden olabilir.

CSRF saldırılarına karşı alınabilecek önlemler arasında, form verilerinin doğrulanması, kimlik doğrulama mekanizmaları kullanımı, tokenlerin kullanımı ve referer denetimleri yer alır.

Örnek bir CSRF saldırısı senaryosu aşağıdaki gibidir:

  • Kullanıcı A, bir banka hesabı web sitesine giriş yapar ve oturum açar.

  • Kullanıcı A, banka hesabından para transferi yapmak için bir form doldurur.

  • Bu sırada, saldırganın kontrolündeki bir web sitesi, kullanıcı A'nın bilgisayarına bir kod yollar. Bu kod, kullanıcının bilgisi olmadan, banka hesabı web sitesine bir istek gönderir ve para transferi işlemini gerçekleştirir.

CSRF saldırılarına karşı önlem almak için, uygulamanın girdi doğrulaması yapması ve oturum kontrolünü güvenli bir şekilde yönetmesi gerekir. Ayrıca, tokenler kullanarak form verilerinin doğruluğunu kontrol etmek de yararlı bir yöntemdir.

Örnek bir CSRF saldırısını önlemek için, web uygulaması, her form için benzersiz bir token oluşturabilir ve bu token'i formda saklayabilir. Daha sonra, sunucu, form verilerini işlemeden önce, token'in doğruluğunu kontrol edebilir. Bu sayede, saldırganlar, token'i bilmemeleri durumunda, form verilerini işleyemezler.

CSRF saldırılarının önlenmesi için genellikle iki adımlı bir yaklaşım kullanılır:

  1. Form sayfasında, rastgele bir değer üretilir ve bu değer form verileriyle birlikte sunucuya gönderilir.

  2. Form verileri sunucuda işlenirken, bu rastgele değerin doğru olup olmadığı kontrol edilir. Eğer doğruysa işlem yapılır, değilse hata mesajı verilir.

Örnek bir CSRF saldırısını önlemek için aşağıdaki kod örneği kullanılabilir:

Form sayfası:

<form action="submit.php" method="post">
  <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
  <!-- Diğer form elemanları burada yer alır -->
  <button type="submit">Gönder</button>
</form>

Bu formda, rastgele bir CSRF token'i $_SESSION üzerinde saklanır ve bir gizli alan olarak formda yer alır. Form gönderilirken, bu CSRF token'i de sunucuya gönderilir.

Form işleyen PHP dosyası (submit.php):

session_start();

if ($_POST['csrf_token'] !== $_SESSION['csrf_token']) {
  die('CSRF saldırısı tespit edildi!');
}

// Diğer form verileri burada işlenir

Bu PHP dosyasında, gönderilen CSRF token'i $_SESSION üzerinde saklanan token ile karşılaştırılır. Eğer token'lar aynı değilse, bir CSRF saldırısı olduğu varsayılır ve işlem durdurulur.

Bu yöntem, CSRF saldırılarını engellemek için etkili bir yöntemdir. Ancak, token üretme ve kontrol etme işlemleri doğru bir şekilde yapılmazsa, uygulama hala savunmasız kalabilir. Bu nedenle, güvenlik konularında uzman kişilerin yönergeleri takip edilerek uygulama geliştirilmelidir.

Last updated 2 years ago

Was this helpful?

😎