Cevaplar
-
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
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);
?>11 yıl önce yazılmış
-
-
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. -
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.