> For the complete documentation index, see [llms.txt](https://docs.layraweb.com.tr/merhaba/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.layraweb.com.tr/merhaba/php-tarafi/konular/guvenlik/csrf-cross-site-request-forgery.md).

# 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ı:

```html
<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):

```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.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.layraweb.com.tr/merhaba/php-tarafi/konular/guvenlik/csrf-cross-site-request-forgery.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
