Kodları lütfen aşağıdaki butonları kullanarak renklendirin. Örnek: <php> echo "Selam Dünya"; </php>
Yardım
karakter kaldı

Html Purifier Sınıfının Kullanımı

Merhaba arkadaşlar bir proje üzerinde çalışıyordum ve hemen hemen bitirdim sayılır. Bilindiği üzere özene bezene yazdığımız php scriptlerde ufak bir xss açığı yüzünden lamerlerin hedefi olabiliyoruz. Nette bunu engellemek için çeşitli sınıf ve fonksiyonlar buldum. İçlerinde Html Purifier adlı sınıf bazı büyük çapta projelerde halen daha kullanılmakta ve oldukça methediliyor aranızda bu sınıfı kullanan arkadaşlar varsa belki biraz bilgi verebilir diye düşünüyorum.Yani avantajları dezavantajları vs...

http://www.htmlpurifier.org

Herkese iyi çalışmalar...
+0
-0
Cevaba KatılıyorumKatılmıyorum
Cevap Yaz Yorum Yaz Arşivime Ekle Takip Et

Cevaplar

  • yunusy adlı üyenin fotoğrafı
    10 yıl önce yazılmış
    9 cevap - 3 soru
    Merhaba; dezavantaj olarak çok büyük bir sınıf olması gösterilebilir. Sınıfı dahil ettikten sonra aşağıdaki kodu kullanarak gerekli işlemleri yapabilirsin
    function removeXSS($data,$moreelem = NULL,$moreattr = NULL)
    {
    	$config = HTMLPurifier_Config::createDefault();
            $config->set('Core.Encoding', 'UTF-8'); 
            $config->set('HTML.Doctype', 'XHTML 1.0 Transitional'); 
            $config->set('HTML.AllowedAttributes', '*.style,a.href,a.title,img.src,img.alt,img.title,img.width,img.height'.$moreattr);
            $config->set('HTML.AllowedElements', 'a,strong,span,em,p,u,i,b,img,sup,sub,small,ul,li,ol,big,code,blockquote,hr,h1,h2,h3,h4,h5'.$moreelem);
     
           
            $config->set('CSS.AllowedProperties', array('float', 'color','background-color', 'background', 'font-size', 'font-family', 'text-decoration', 'font-weight', 'font-style', 'font-size'));
            $config->set('AutoFormat.RemoveSpansWithoutAttributes', true);
            $config->set('AutoFormat.RemoveEmpty', true);
    		//$config->set('AutoFormat.Linkify', true);
            
    
    	// ayarlarımızı kaydedelim
    	$purifier = new HTMLPurifier($config);
    	// $dirty_html kullanıcıdan gelen güvenilmez veriler
    	$clean_html = $purifier->purify($data);	
    	return $clean_html;
    }
    

    Sadece istediğin taglara, atributelere ve css propertylerine müsade edebiliyorsun böylece.
    • php_delisi adlı üyenin fotoğrafı php_delisi
      Bu fonksiyonu siz mi yazdınız?v4.3.0 yani son sürümü için geçerlimi bu kullanım.Çünkü Html Purifierin resmi sitesinde böyle bir fonksiyona rastlamadım bu fonksiyonun kaynağını öğrenebilirmiyim mümkünse? Resmi sitesinde şu tip kullanımlardan bahsediyor:

      Eğer websitenizin kodlaması UTF-8 ve XHTML Transitional, ise aşağıdaki kodu kullanın yazıyor:

      <?php
      require_once '/path/to/htmlpurifier/library/HTMLPurifier.auto.php';

      $purifier = new HTMLPurifier();
      $clean_html = $purifier->purify($dirty_html);
      ?>

      Eğer websiteniz farklı bir kodlama tipindeyse, şu kodu kullanın:
      <?php
      require_once '/path/to/htmlpurifier/library/HTMLPurifier.auto.php';

      $config = HTMLPurifier_Config::createDefault();
      $config->set('Core', 'Encoding', 'ISO-8859-1'); // replace with your encoding
      $config->set('HTML', 'Doctype', 'HTML 4.01 Transitional'); // replace with your doctype
      $purifier = new HTMLPurifier($config);

      $clean_html = $purifier->purify($dirty_html);
      ?>
      10 yıl önce yazılmış
  • 1
    muratmoon adlı üyenin fotoğrafı
    10 yıl önce yazılmış
    38 cevap - 1 soru
    Merhaba,

    Kullanıcılardan html almam gerektiği her projede kullanırım. WYSIWYG tarzı editör kullanılan tüm projeler buna örnek gösterilebilir.

    Çıktı formatını seçebilmen çok iyi bir özellik, HTML5 dersen öyle veriyor, XHTML dersen ona uygun veriyor, böylelikle sitenin yapısını hiç bozmadan içeriği entegre edebiliyorsun.

    Sınıf çok büyük olsa da ben performans sorunu hiç yaşamadım. Yalnız yine de sınıfı içeriği gösterirken değil, ilk kez veritabanına kayıt ederken kullanmaya dikkat edersen iyi olur.
  • halidaltuner adlı üyenin fotoğrafı
    10 yıl önce yazılmış
    144 cevap - 4 soru
    HTMLPurifier büyük projelerde oldukça başarılıdır. Ancak ufak projelerde ya da performans kaybı yaşamak istemediğiniz projelerde kullanmamanızı tavsiye ederim.

    Onun yerine Kohana Framework'un xss_clean adında bir fonksiyonu var. Bu tarz XSS açıklarını engelleyen oldukça basit ve kullanışlı bir fonksiyon.

    https://github.com/kohana/core/blob/c443c44922ef13421f4a3af5b414e19091bbdce9/classes/kohana/security.php (29. Satırdan itibaren)

    Yine de ihtiyacınıza göre bu durum değişkenlik gösterir.