html injection

 

🔍 HTML Injection Nedir?

HTML Injection, saldırganın bir web uygulamasına zararlı veya istenmeyen HTML kodları enjekte etmesine olanak tanır. Bu saldırı, genellikle bir form, URL parametresi ya da arama kutusu gibi girdi alanlarından yararlanarak yapılır.


🧠 HTML Injection Türleri

1. Stored (Kalıcı) HTML Injection

Saldırganın enjekte ettiği HTML kodu veritabanına kaydedilir ve bu kod daha sonra siteyi ziyaret eden herkese gösterilir.

Örn: Bir yorum kutusuna <h1>Hacklendi</h1> yazılır ve bu yorum tüm kullanıcılara gösterilir.

2. Reflected (Yansıtılmış) HTML Injection

Kötü amaçlı HTML kodu, URL ya da form aracılığıyla gönderilir ve doğrudan yanıtın içinde yansıtılır.

Örn: example.com/search?q=<b>merhaba</b> gibi bir istek sonucu "merhaba" kalın olarak gösterilir.


🧪 Basit Bir HTML Injection Örneği

html

<form method="GET" action="search.php"> Arama: <input type="text" name="query"> </form>

Ve search.php şöyle olabilir:

php

<?php $query = $_GET["query"]; echo "Sonuçlar: $query"; ?>

Kullanıcı şu şekilde bir giriş yaparsa:

php-template

<script>alert('hack')</script>

Sayfada çalışacak JavaScript kodu, bir XSS saldırısına dönüşebilir. Bu HTML Injection'dan Cross-Site Scripting (XSS)'e geçişin en net örneğidir.


⚠️ HTML Injection ile Neler Yapılabilir?

  • Kullanıcıya yanıltıcı içerik gösterme (örneğin sahte formlar)

  • Sayfa düzenini bozma

  • Diğer kullanıcılara görsel mesajlar gönderme

  • Başka sitelere yönlendirme linkleri ekleme

  • XSS saldırıları için zemin hazırlama


🛡️ Korunma Yöntemleri

  • Output Encoding: Kullanıcıdan gelen verileri HTML olarak değil, düz metin olarak çıkarmak için encode (örneğin < karakterini &lt; yapmak).

  • Input Validation: Girişleri sadece izin verilen karakterlerle sınırlandırmak.

  • White-listing: Sadece belirli karakterlere izin vermek (örneğin sadece harf ve rakamlar).

  • HTML templating sistemleri: Güvenli şablon motorları (örneğin React, Vue gibi modern framework'ler bu tehlikeyi otomatik olarak engeller).

  • Content Security Policy (CSP): Tarayıcının dış kaynaklardan veya inline script’lerden kod çalıştırmasını kısıtlamak.


🕰️ Tarihçesi ve Önem

HTML Injection, 1990’ların sonunda dinamik web sitelerinin artmasıyla yaygınlaştı. Başlangıçta önemsiz gibi görünse de, zamanla XSS gibi daha ciddi saldırıların temel taşı olduğu anlaşıldı. Özellikle kullanıcı verisi ile çalışan tüm uygulamalar için hala büyük bir güvenlik riski oluşturmaktadır.


✅ Özet

KriterAçıklama
Açık AdıHTML Injection
Tehlike DüzeyiOrta–Yüksek (XSS’e dönüşebilir)
Saldırı TipiClient-side
KapsamHTML yapısını bozma veya değiştirme
ÇözümInput/Output validation + Encoding