1. 0

Aşağıdaki kod bloğunda name özelliğine atanan değerleri tırnak içine almayınca, çift tırnak ve tek tırnak içine alınca neler değişiyor? Nasıl kullanacağımı bilemedim.

<meta name=viewport content="width=device-width, initial-scale=1"> 
<meta name="viewport" content="width=device-width, initial-scale=1"> 
<meta name='viewport' content="width=device-width, initial-scale=1">

developers.google.com 'da tırnak içine almamış, ziyaret ettiğim web sitelerinde çift tırnak içine alınmış, HTML5 çalışmak için aldığım kitapta ise tek tırnak kullanımının da doğru olduğunu söylüyor. Hangisi doğru, hangisini kullanmalıyım bunlar hakkında bilgi verirseniz sevinirim.

1 yanıt
  1. 1
    Emre Özdemir
    Ünvan yok · 5 ay önce

    Hepsi doğru, ama genel bir kural olarak html etiketlerinin niteliklerini çift tırnak ile sarmak en doğrusu.

    Neden doğru veya yanlış derseniz konu XSS saldırılarıyla alakalı. Kısaca site kullanıcılarının sitenize istemediğiniz kodları "gömme" mevzusu. Bu sayede istemcinin tarayıcısında zararlı javascript çalıştırılabiliyor.

    Çift tırnak en doğrusu çünkü zararlı html girdilerini temizleyen bir çok fonksiyon tek tırnak ve tırnaksız durumlar için koruma sağlamıyor.

    Örneğin PHP için htmlspecialchars fonksiyonuna şöyle bir kayıt düşülmüş:

    Öntanımlı olan ENT_COMPAT ile geriye uyumlu olarak sadece çift tırnaklar dönüştürülür, tek tırnaklara dokunulmaz.

    Bu da demek oluyor ki bu fonksiyonu kullanırken veya kullanan kütüphaneleri kullanırken tek tırnak kullanılan hiç bir yerde güvende olmuş olmuyorsunuz.

    Bu verdiğiniz meta etiketi örneği tehlikeye açık değil. Ama site kullanıcısının belirleyebildiği

    <img src='<?php echo htmlspecialchars($resimAdresi); ?>' alt='<?php echo htmlspecialchars($resimBasligi); ?>'>

    şeklindeki bir yapı için

    <?php
    $resimBasligi = "resimBasligi' onload='alert(1);'";

    ifadesi enjekte edildiğinde alt özelliğinin dışına çıkabilmiş oluyorsunuz. Yani örneğin

    <img src='resim.jpg' alt='selam' onload='alert(1);'>

    şeklinde bir çıktı oluşacak (ki bu çok tehlikeli). Halbuki çift tırnak kullanılsaydı bu olmamış olacaktı.

    Örnek kafa karıştırıcı olabilir, en alttaki linkler daha açıklayıcı.

    Yine de dikkat edildiğinde hepsi kullanılabilir ama boşuna kendinize eziyet etmiş olursunuz.

    Bu konuyu ayrıntılarıyla merak ediyorsanız XSS ve Output Escaping mevzularına göz atmanızı tavsiye ederim:

    https://www.owasp.org/index.php/Cross-site_Scripting_(XSS)

    https://www.owasp.org/index.php/XSS_(Cross_Site_Sc...