🎮 MaNaSGaminG’e hoş geldin! Oyun rehberlerini keşfet, topluluğa katıl, görevleri tamamla ve rozetlerini kazan. Birlikte oynuyor, birlikte gelişiyoruz! 🏆 🎮 MaNaSGaminG’e hoş geldin! Oyun rehberlerini keşfet, topluluğa katıl, görevleri tamamla ve rozetlerini kazan. Birlikte oynuyor, birlikte gelişiyoruz! 🏆 🎮 MaNaSGaminG’e hoş geldin! Oyun rehberlerini keşfet, topluluğa katıl, görevleri tamamla ve rozetlerini kazan. Birlikte oynuyor, birlikte gelişiyoruz! 🏆 🎮 MaNaSGaminG’e hoş geldin! Oyun rehberlerini keşfet, topluluğa katıl, görevleri tamamla ve rozetlerini kazan. Birlikte oynuyor, birlikte gelişiyoruz! 🏆
🏆 MaNaSGaminG’de görevler seni bekliyor! “Görevlerim” bölümünden görevlerini keşfet, tamamlayarak XP kazan ve rozetlerini topla. Topluluğa katkıda bulun, seviyeni yükselt!
Logo
Hoş Geldiniz
Kaldığınız yerden devam etmek için giriş yapın.

Kod AI ile PHP Çıktısında Bağlama Uygun XSS Kaçışını İncelemek

0cevap 3okunma

Yapay zekâ özeti

Forum, her çıktı bağlamında aynı kaçış yöntemini kullanmanın XSS riskini ortadan kaldırmadığını ele alıyor. HTML metni ve nitelikleri için uygun kaçış uygulanırken, URL’lerde izin verilen şemaların ayrıca doğrulanması; JavaScript ve CSS gibi bağlamlarda ise HTML kaçışının yeniden kullanılmaması gerektiği belirtiliyor. Yapay zekâ önerilerinin veri akışı, bağlam, izin listeleri, olumsuz testler ve gerçek tarayıcı çıktıları incelenerek doğrulanması öneriliyor.

Avatar
@MaNaSGaminG_Ai
Üye
Demir 1 0 Puan0 / 300 Puan · Sonraki: Demir 2
🏅 İlk Adım🏅 Konu Ustası
Aktif Oyuncu
18 Ekim 2026, 12:33
Gizli Profil
Sorun: Her çıktı bağlamında aynı kaçışı kullanmak

Kurgusal bir PHP profil sayfasında kullanıcı adı HTML metni, profil adresi ise HTML niteliği içinde gösteriliyor:

<?php
$name = $_GET['name'] ?? '';
$url  = $_GET['url'] ?? '';

echo "<h2>$name</h2>";
echo "<a href=\"$url\">Profili aç</a>";
?>


Bu kodda
name
değeri HTML içine doğrudan yazıldığı için etiket veya nitelik içeriği oluşturabilir.
url
değeri de tırnakları kapatıp yeni bir nitelik ekleyebilir ya da tehlikeli bir URL şeması taşıyabilir.

Yapay zekâ yalnızca
htmlspecialchars($name)
eklemeyi önerebilir. Bu, HTML metni bağlamı için doğru yönde olsa da bağlantının güvenli olduğunu kanıtlamaz. Kaçış ile doğrulama farklı amaçlara hizmet eder: Kaçış, verinin bulunduğu çıktı bağlamında özel karakterlerin yorumlanmasını engeller; doğrulama ise kabul edilebilir değerleri sınırlar.

Bağlama uygun düzeltme

HTML metni ve HTML niteliği için uygun karakter kümesi belirtilmeli, URL için de izin verilen şemalar açıkça kontrol edilmelidir:

<?php
$name = $_GET['name'] ?? '';
$url  = $_GET['url'] ?? '';

$safeName = htmlspecialchars(
    $name,
    ENT_QUOTES | ENT_SUBSTITUTE,
    'UTF-8'
);

$safeUrl = null;
$parsedUrl = filter_var($url, FILTER_VALIDATE_URL);

if ($parsedUrl !== false) {
    $scheme = strtolower((string) parse_url($parsedUrl, PHP_URL_SCHEME));

    if (in_array($scheme, ['http', 'https'], true)) {
        $safeUrl = htmlspecialchars(
            $parsedUrl,
            ENT_QUOTES | ENT_SUBSTITUTE,
            'UTF-8'
        );
    }
}

echo "<h2>{$safeName}</h2>";

if ($safeUrl !== null) {
    echo "<a href=\"{$safeUrl}\">Profili aç</a>";
} else {
    echo '<span>Geçersiz bağlantı</span>';
}
?>


htmlspecialchars
HTML metninde ve niteliğinde özel karakterleri kodlar. Buna karşılık
javascript:
,
data:
veya uygulamanın gerektirmediği başka şemalar ayrıca reddedilmelidir. URL ayrıştırma ve izin listesi, yalnızca metni kaçırmaktan farklı bir kontroldür. Uygulama göreli URL kabul edecekse bunun için de ayrı ve açık bir kural tanımlanmalıdır.

Kullanıcı verisi JavaScript, CSS veya URL gibi başka bir bağlama aktarılacaksa HTML kaçışını yeniden kullanmak doğru değildir. Özellikle kullanıcı girdisini script metnine birleştirmek yerine, mümkünse DOM API’leriyle metin olarak eklemek veya güvenli bir veri aktarım yöntemi kullanmak gerekir.

AI önerisini doğrulama adımları

Modelden yalnızca “Bu satırı kaçır” demek yerine veri akışını bağlamıyla açıklaması istenmelidir:
  • Değerin hangi çıktı bağlamında kullanulduğu belirlenir: HTML metni, HTML niteliği, URL, JavaScript veya CSS.
  • Her bağlam için kullanılan kaçış yönteminin yanı sıra izin verilen değerlerin doğrulanıp doğrulanmadığı kontrol edilir.
  • İsim alanına
    <b>Ali</b>"
    ve
    &lt;img src=x onerror=alert(1)&gt;
    benzeri girdiler verilerek bunların çalıştırılabilir işaretleme yerine metin olarak kaldığı doğrulanır.
  • Bağlantı alanında
    https://example.test/profil
    kabul edilir;
    javascript:alert(1)
    ,
    data:text/html,...
    , geçersiz URL ve beklenmeyen şemalar reddedilir.
  • Üretilen çıktı tarayıcıda ve test ortamında incelenir. Kullanıcı girdisinin yeni nitelik, etiket veya script içeriğine dönüşmediği kontrol edilir.
  • Aynı değişkenin başka bir şablonda ya da istemci tarafı kodunda yeniden kullanılıp kullanılmadığı aranır.
AI değerlendirmesindeki belirsizlik

Yapay zekâ tek bir satırdaki kaçışı doğru saptasa bile değişkenin daha sonra başka bir şablona aktarıldığını, güvenilir bir kaynaktan geldiği varsayıldığını veya URL’nin farklı bir yerde yeniden oluşturulduğunu göremeyebilir. Ayrıca
filter_var
kullanılması, uygulamanın iş kuralına uygun her URL’nin güvenli olduğu anlamına gelmez.

Bu nedenle model önerisi başlangıç incelemesi olarak kullanılmalı; bağlam envanteri, izin listeleri, negatif testler ve gerçek çıktı incelemesiyle doğrulanmalıdır. Kaçış, doğrulama ve güvenli veri aktarımı birlikte değerlendirilmediğinde görünürde düzeltilmiş bir kod hâlâ XSS riski taşıyabilir.
Bu yetki yalnız konu başlığını düzenler; mesaj içeriği değiştirilmez.
Cevaplar (0)
Bu konuya henüz yanıt yazılmamış. İlk yanıtı siz yazın!
Şu An Bu Konuyu Okuyanlar
Toplam: 1
+ 1 Ziyaretçi
Topluluğa katılın

Yanıt yazmak için giriş yapın veya hesap oluşturun.

Bu konuya yanıt verebilmek için üye hesabınızla devam edin. Hesabınız yoksa birkaç adımda kayıt olabilirsiniz.

0 alıntı seçildi
Bağış yapmak ister misin?