ایجاد: ۲۳:۱۰ ۱۳۹۱/۶/۱۰
ویرایش: ۱۱:۵۱ ۱۳۹۲/۱۱/۲۷

آموزش‌ها

»

تنظیم اچ تی ام ال پیوریفایر

زمانی که بخواهیم یک متن ساده را امن کنیم، معمولا از تابع htmlentities استفاده می‌کنیم:
echo $_POST['message'];  //  خطرناک
echo htmlentities($_POST['message'], ENT_QUOTES, 'UTF-8');  //  امن

اما اگر متن ما حاوی تگ‌های html باشد (مثلا توسط یک ادیتور wysiwug تهیه شده باشد) آنگاه لازم است تگ‌های صحیح و مفید را حفظ کنیم و تگ‌های نامطلوب یا خطرساز را حذف کنیم. انجام این کار به صورت دستی یا با تکیه بر حالات معدودی که سراغ داریم، کار صحیحی نیست و بهتر است از کتابخانه‌هایی که در این زمینه وجود دارد، استفاده کنیم. یکی از بهترین این کتابخانه‌ها که دائما هم بروزرسانی می‌شود و تیم فعالی دارد، HTML Purifier است.

htmlpurifier یک کتابخانه بسیار قدرتمند است که به زبان php نگاشته شده و هدف آن؛ تصحیح نشانه‌گذاری html و همچنین دفع خطر حملات xss می‌باشد. جهت استفاده از آن می‌توان به با یک تنظیم اولیه ساده، اینگونه عمل کرد:

include(dirname(__FILE__).'/htmlpurifier-4.7.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 به اطلاعات بیشتری دست پیدا کنید. یک نمونه تنظیم پیشرفته:
include(dirname(__FILE__).'/htmlpurifier-4.7.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);

یادداشت‌های مرتبط
  1. API چیست؟
  2. ارتقاء امنیت وردپرس
  3. آشنایی با دو قابلیت جدید مرورگرها: WebRTC و ضبط صدا و تصویر!
  4. لیست مواردی که برای امنیت برنامه PHP لازم است چک شود
  5. امنیت در انگولر جی اس
  6. انواع روش های شناسایی و احراز هویت کاربران یک صفحه وب
  7. پیشگیری از حملات جعل درخواست بین سایتی
  8. موثرترین روش برنامه نویسان برای مقابله با کی لاگر ها
  9. حملات ضدامنیتی XSS یا تزریق کد

مدیریت

نام وسیله

اعتبار ورود

نام کاربری

رمز عبور

رمز یکبارمصرف

... لیست تمام آموزش‌ها

تبلیغات

ربات‌های تلگرامی:
مجموعه ربات‌های تلگرامی ما برای ساده‌تر کردن کار با تلگرام و مدیریت کانال
دامنه‌های فروشی:
دامنه‌های زیر مربوط به ما یا مشتریان ماست که قابل واگذاری هستند. در صورت تمایل به داشتن یکی از آنها، با این اکانت تلگرامی مکاتبه نمایید.

دامنه‌هایی که می‌تواند مصرف تخصصی داشته باشد:
AnyDesk.ir, Firebase.ir, Angularjs.ir, 9px.ir alAdmin.ir, iQore.ir notion.ir, 3dn.ir,

دامنه‌هایی که می‌تواند مصرف فرهنگی/مذهبی داشته باشد:
mavaez.ir, 2aha.ir, babolelm.ir, mahjoor.ir

دامنه‌هایی که می‌تواند مصرف شخصی/عمومی داشته باشد:
azizami.ir, 90blog.ir