PDA

View Full Version : اطلاعات کامل درباره htmlpurifier



engmmrj
دوشنبه 25 دی 1391, 13:48 عصر
htmlpurifier چیست؟
به چه دردی میخوره؟
لطفا یک منبع آموزشی براش معرفی کنید؟
تو بعضی سایت ها نوشته بود که وقتی از pdo استفاده میکنید دیگه لازم به استفاده از htmlpurifier نیست
آیا این حرف درست است؟

navid3d_69
دوشنبه 25 دی 1391, 16:27 عصر
برای وقتی هست که می خواین متن هایی که از ادیتور کاربر وارد میکنه رو امن کنید این هم یک نمونه از کد استفاده




include(dirname(__FILE__).'/htmlpurifier-4.4.0/HTMLPurifier.auto.php');

$config = HTMLPurifier_Config::createDefault();
$config->set('HTML.TidyLevel', 'heavy');
$config->set('Core.Encoding', 'UTF-8');
$config->set('HTML.Doctype', 'XHTML 1.0 Transitional');
$config->set('HTML.TargetBlank', true);
$config->set('HTML.Attr.Name.UseCDATA', true);
$config->set('HTML.Allowed', 'h1[class], h2[class], h3[class], img[class|alt|src], a[class|href|title|target|rel], p[class], div[class], span[class], br, hr, blockquote[class], ul[class], ol[class], li[class], table[class], tr[class], th[class], td[class]');
$config->set('Attr.AllowedClasses', array('c', 'j', 'l', 'r', 'pd9', 'mr9', 'r9', 'brdr', 'grn', 'ltr'));
$config->set('AutoFormat.RemoveEmpty', true);
$config->set('AutoFormat.Linkify', true);
$config->set('AutoFormat.RemoveSpansWithoutAttributes', true);
$config->set('Attr.DefaultImageAlt', '[image]');

$def = $config->getHTMLDefinition(true);
$def->addAttribute('a', 'target', 'Enum#_blank');
$def->addAttribute('a', 'rel', 'Enum#nofollow');

$purifier = new HTMLPurifier($config);

$yourText = $purifier->purify($yourText);

engmmrj
دوشنبه 25 دی 1391, 17:47 عصر
این کدهارو تو برنامم کپی کنم امن میشه؟:گیج:

engmmrj
دوشنبه 25 دی 1391, 21:33 عصر
کسی نیست کمک کنه؟

parsboy
دوشنبه 25 دی 1391, 23:16 عصر
htmlpurifier یک کتابخانه بسیار قدرتمند است که به زبان php نگاشته شده و هدف آن؛ تصحیح نشانه‌گذاری html و همچنین دفع خطر حملات xss است
جهت استفاده از آن می‌توان به اینگونه عمل کرد:

include(dirname(__FILE__).'/htmlpurifier-4.4.0/HTMLPurifier.auto.php');
$config = HTMLPurifier_Config::createDefault();
$config->set('Core.Encoding', 'UTF-8');
$config->set('HTML.Doctype', 'XHTML 1.0 Transitional');
$purifier = new HTMLPurifier($config);

echo $_POST['message']; // خطرناک
echo $purifier->purify($_POST['message']); // امن
برای اطلاعات بیشتر باید Configuration Documentation و Customize HTMLPurifier دست پیدا کنید.

engmmrj
دوشنبه 25 دی 1391, 23:21 عصر
htmlpurifier یک کتابخانه بسیار قدرتمند است که به زبان php نگاشته شده و هدف آن؛ تصحیح نشانه‌گذاری html و همچنین دفع خطر حملات xss است
جهت استفاده از آن می‌توان به اینگونه عمل کرد:

include(dirname(__FILE__).'/htmlpurifier-4.4.0/HTMLPurifier.auto.php');
$config = HTMLPurifier_Config::createDefault();
$config->set('Core.Encoding', 'UTF-8');
$config->set('HTML.Doctype', 'XHTML 1.0 Transitional');
$purifier = new HTMLPurifier($config);

echo $_POST['message']; // خطرناک
echo $purifier->purify($_POST['message']); // امن
برای اطلاعات بیشتر باید Configuration Documentation و Customize HTMLPurifier دست پیدا کنید.
اینو که خودم میدونستم:متفکر:

engmmrj
دوشنبه 25 دی 1391, 23:23 عصر
با این کتاب خونه امنیتم در برابر xss ها 100 درصد تضمینه؟

navid3d_69
سه شنبه 26 دی 1391, 07:39 صبح
کد اول امن هست چون تنظیمات کامل هست ولی کدی که دوستمون parsboyگذاشتن چون تنظیمات کامل نیست امن نیست و شما فقط باید آدرس کتاب خانه htmlpurifier رو include کنین و کد رو بزارین و متن گرفته شده از کاربر و از این کلاس عبور بدین که توی نمونه هست

engmmrj
جمعه 06 اردیبهشت 1392, 20:29 عصر
برای وقتی هست که می خواین متن هایی که از ادیتور کاربر وارد میکنه رو امن کنید این هم یک نمونه از کد استفاده




include(dirname(__FILE__).'/htmlpurifier-4.4.0/HTMLPurifier.auto.php');

$config = HTMLPurifier_Config::createDefault();
$config->set('HTML.TidyLevel', 'heavy');
$config->set('Core.Encoding', 'UTF-8');
$config->set('HTML.Doctype', 'XHTML 1.0 Transitional');
$config->set('HTML.TargetBlank', true);
$config->set('HTML.Attr.Name.UseCDATA', true);
$config->set('HTML.Allowed', 'h1[class], h2[class], h3[class], img[class|alt|src], a[class|href|title|target|rel], p[class], div[class], span[class], br, hr, blockquote[class], ul[class], ol[class], li[class], table[class], tr[class], th[class], td[class]');
$config->set('Attr.AllowedClasses', array('c', 'j', 'l', 'r', 'pd9', 'mr9', 'r9', 'brdr', 'grn', 'ltr'));
$config->set('AutoFormat.RemoveEmpty', true);
$config->set('AutoFormat.Linkify', true);
$config->set('AutoFormat.RemoveSpansWithoutAttributes', true);
$config->set('Attr.DefaultImageAlt', '[image]');

$def = $config->getHTMLDefinition(true);
$def->addAttribute('a', 'target', 'Enum#_blank');
$def->addAttribute('a', 'rel', 'Enum#nofollow');

$purifier = new HTMLPurifier($config);

$yourText = $purifier->purify($yourText);


این تنظیماتی که شما گفتی کل تگ رو پاک میکنه

navid3d_69
شنبه 07 اردیبهشت 1392, 12:45 عصر
کل تگ هارو نه این تنظیمات رو برای خودم گذاشتم مشکلی نداره و تگ هایی که لازم بوده رو فقط گذاشتم شما می تونین اضافه کنید تگ هایی رو که می خواین