O (hack riski vardır) bir dizi içinde HTML etiketleri için Tamam mı?

6 Cevap php

Ben şu dizi var:

'tagline_p' => "I'm a <a href='#showcase'>multilingual web</a> developer, designer and translator. I'm here to <a href='#contact'>help you</a> reach a worldwide audience.",

Ben siteme hackings önlemek için dizinin içindeki HTML etiketlerini kaçmak gerekir? (Onları kaçmak için?)

veya Tamam bir dizi içinde HTML etiketleri var mı?

6 Cevap

Kullanıcı girişi içerdiği zaman bir sorun haline gelir tek zamandır. Eğer dizide koymak ne olduğunu biliyorum, ve güven. Ama sen, kullanıcıların geçiyoruz bilmiyorum ve bu güvenmiyorum.

Bu nedenle, bu özel durumda, kaçan gerekli değildir. Ama en kısa sürede kullanıcı girişi söz konusu olduğunda, should girişini kaçış.

Bu tehlikeli HTML kendisi değil, ancak HTML kullanıcıların tipi onları Javascript çalıştırmasına izin script etiketleri gibi, iletebilirsiniz.

Addition

Sadece output değil girişine üzerinde kaçmak için en iyi uygulama olduğunu unutmayın. Veri zarar nerede çıktı, yani sürekli o kaçmak istiyorum. Bu şekilde, tüm giriş kaçtı olduğundan emin olmak zorunda değilsiniz.

Belki farklı kurallar geçerli farklı biçimlerde veri çıkışının Bu yolla, sorunları yok. Eğer html çıktısı olarak şeyler gerekmiyorsa stripslashes() veya htmlspecialchars_decode() gibi şeyler kullanmak zorunda değilsiniz.

Bu dizide veri depolamak için iyi.

Yalnızca bir HTML bağlam içine çıkış olduğunda etiketleri kaçmak gerekir, ve bunu güvenmiyorum, veya HTML yorumlanamaz istemiyorum.

Eğer göndermeden nerede uygun bir şekilde veri kaçmak zorunda; Bir SQL deyimi içine koyarak ve bunu SQL gibi okunacak istemiyorsanız bunu HTML olarak okunacak istemiyorsanız HTML için size (htmlspecialchars kullanabilirsiniz), aynı şekilde, sen mysql_real_escape_string kullanabilirsiniz () vb

Bir kullanıcı tarafından girilen (ve dolayısıyla güvensiz) ve size sitede bu HTML görüntülemek için gidiyoruz edildiğinde HTML kaçmak gerekir. Bunu yazdı kim varsa, o kaçan her türlü ihtiyacı yoktur.

Eğer html kaçmak gerekir yoksa sağ sitede görüntülemeden önce yapmanız gerekir. (Eğer presummably bu dizi ile yapıyoruz gibi) sadece bunu ayırmayan yaparken verileri kaçmaya gerek yoktur. Sen htmlspecialchars() fonksiyonu ile HTML kaçabilir.

Bu HTML diziye oluyor nasıl bağlıdır. Senin tarafından kodlanmış eğer, muhtemelen tamam. Bir kullanıcı geliyor, iyi, all kullanıcı girişi şüpheli-HTML temizlemek için sadece daha zordur.

Asıl soru "Neden bir dizi HTML koymak istiyorsun?" Olabilir. Statik metin ise, bir yerde bir şablon dosyaya koydu.

izin verilen etiketleri bir dizi yapmak ve kullanmak strip_tags($input_array[$key],$allowable_tags)

ya da bu gibi bir işlevi yapmak

function sanitize_input($allowable_tags='<br><b><strong><p>')
{                   
    $input_array = $input;
    foreach ($input as $key=>$value){
   if(!empty($value)) {
    $input_array[$key] = strip_tags($input_array[$key],$allowable_tags);
   }
 }
 return $input_array;

}